В Symfony Я использую запрос для извлечения всех вопросов и их относительных ответов из базы данных. Используя for
в twig Я пытаюсь отобразить в таблице все вопросы с относительными ответами подряд за строкой. На данный момент я могу получить доступ и отображать только вопросы, но не ответы. Соотношение между моими объектами Questions and Answers
(от одного до многих), таким образом, при получении вопроса также получаются ответы. Используя дамп, я вижу, что ответы помещаются в коллекцию массивов.Symfony извлекает данные из коллекции Array
Попытка получить только один вопрос из базы данных с другим запросом, используя функцию getAnswers()
от моего Question
сущности, я могу получить ответы из коллекции массива, используя эту инструкцию:
$answer = $question->getAnswers()->getValues();
Использование этого заявление, которое я пытался получить ответы на все вопросы, используя сильфон код в контроллере, но я получаю эту ошибку:
Error: Call to a member function getAnswers() on a non-object
Я считаю, что это происходит потому, что запрос возвращает несколько вопросов и не JUS т. Как я могу получить ответы на каждый отдельный вопрос из коллекции массивов? Заранее спасибо за помощь.
Controller Код:
$question = $this->getDoctrine()
->getRepository('QuizBundle:Question')
->findByIdJoinedToCategory();
return $this->render('QuizBundle:Default:admin.html.twig', array('data' => $question));
Вопрос Repository:
public function findByIdJoinedToCategory()
{
$query = $this->getEntityManager()
->createQuery(
'SELECT a, q FROM QuizBundle:Question a
JOIN a.answers q');
try {
return $query->getResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
Twig Код:
{% for item in data %}
<tbody>
<tr>
<th scope="row">{{ item.id }}</th>
<td>{{ item.image }}</td>
<td>{{ item.question }}</td>
<td></td>
<tr>
<tbody>
{% endfor %}
скриншот Дамп данных из запроса:
Я получаю эту ошибку: 'Невозможно получить доступ к атрибуту («ответы») на переменную строки («Q1_Question1») в QuizBundle: По умолчанию: admin.html.twig на линии 28' – Otonel
Мой плохо, я исправь это. –
Спасибо. Это очень помогло, и это сработало. – Otonel