在Symfony中,我使用查询从数据库中检索所有问题及其相关答案。在树枝中使用for
我试图在表格中逐行显示所有相关答案的问题。目前我只能访问和显示问题而不能回答问题。
我的实体Questions and Answers
之间的关系是(一对多),因此在检索问题时,也会检索答案。使用dump,我可以看到答案放在一个Array Collection中。
尝试使用另一个查询从数据库中获取一个问题,使用getAnswers()
实体中的Question
函数,我可以使用以下语句从数组集合中获取答案:
$answer = $question->getAnswers()->getValues();
使用此语句我尝试使用控制器中的波纹管代码获取所有问题的答案,但是我收到此错误:
错误:在非对象
上调用成员函数getAnswers()
我相信这是因为查询返回了多个问题而不只是一个问题。 如何从Array Collection中获取每个问题的答案?在此先感谢您的帮助。
控制器代码:
$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;
}
}
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 %}
转储查询中数据的屏幕截图:
答案 0 :(得分: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 %}