Symfony получает данные из Array Collection

В Symfony я использую запрос, чтобы получить все вопросы и их относительные ответы из базы данных. Используя for в ветке я пытаюсь отобразить в таблице все вопросы с относительными ответами строка за строкой. На данный момент я могу получить доступ и отображать только вопросы, но не ответы.
Отношения между моими сущностями Questions and Answers является (один ко многим), таким образом, при поиске вопроса, также получаются ответы. Используя dump, я вижу, что ответы помещены в коллекцию Array.

Попытка получить только один вопрос из базы данных с другим запросом, используя getAnswers() функция от моего Question Я могу получить ответы из коллекции массивов с помощью этого оператора:

$answer = $question->getAnswers()->getValues();

Используя это утверждение, я попытался получить ответы на все вопросы, используя приведенный ниже код в контроллере, но я получаю эту ошибку:

Ошибка: вызов функции-члена getAnswers () для необъекта

Я считаю, что это потому, что запрос возвращает несколько вопросов, а не только один.
Как я могу получить ответы на каждый отдельный вопрос из коллекции Array? Заранее спасибо за помощь.

Код контроллера:

$question = $this->getDoctrine()
->getRepository('QuizBundle:Question')
->findByIdJoinedToCategory();
return $this->render('QuizBundle:Default:admin.html.twig', array('data' => $question));

Архив вопросов:

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;
}
}

Код веточки:

{% 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 %}

Дамп скриншот данных из запроса:

Данные запроса

1

Решение

С Twig и в соответствии с вашим запросом доктрины, вы можете отображать ваши вопросы / ответы следующим образом:

{% for item in data %}
<tbody>
<tr>
<th scope="row">{{ item.id }}</th>
<td>{{ item.image }}</td>
<td>{{ item.question }}</td>
{% for answer in item.answers %}
{{ answer.id }}
{% endfor %}
<tr>
<tbody>
{% endfor %}

Кстати, если существует связь между двумя сущностями Вопрос и Ответ, и вы хотите отобразить все вопросы и их ассоциативные ответы, вы можете напрямую сделать это:

В вашем контроллере:

$questions = $this->getDoctrine()
->getRepository('QuizBundle:Question')->findAll();
return $this->render('QuizBundle:Default:admin.html.twig', array('data' => $questions));

В вашей веточке:

{% for question in data %}
<tbody>
<tr>
<th scope="row">{{ question.id }}</th>
<td>{{ question.image }}</td>
{% for answer in question.answers %}
{{ answer.id }}
{% endfor %}
<tr>
<tbody>
{% endfor %}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]