我将一些数据传递给已加入的视图。连接工作正常,因为我可以根据是选择join还是leftJoin来查看结果的数量。我的疑问是:
$query = $repository->createQueryBuilder('p')
->join('p.skill', 's')
->getQuery();
$people2 = $query->getResult();
return $this->render('StudioRaygunTeamBundle:Default:index.html.twig', array('people2' => $people2));
我的观点:
<ul>
{% for person in people2 %}
<li>{{ person.firstname }} {{ person.surname }}
{% for skill in person.skill %}
{{ skill.skillname }}
{% endfor %}
</li>
{% endfor %}
</ul>
除非我更改花括号内的一些值,否则不会抛出任何错误 - 这意味着正在获取的数据是正确的(它是,并且它与实体类匹配)。
但是没有任何输出在skill.skillname(person.firstname等看起来很好!)。
如果我尝试进行转储()我只是得到一个空白屏幕和PHP内存错误,这很烦人,所以我无法调试。
所以要结束 - 我的数据是正确的(没有错误),我的语法,从我读过的,也是正确的 - 但没有为skill.skillname返回数据(person.firstname等按预期显示)。
答案 0 :(得分:1)
您还需要选择加入的实体:
$query = $repository->createQueryBuilder('p')
->addSelect('s')
->join('p.skill', 's')
->getQuery();
Doctrine2填充的变量是您自己的实体类的代理类,它们引用了Doctrine2内部。在这些情况下,递归迫在眉睫。通过递归,您将始终达到内存限制。
因此,有几种调试方法,例如使用xdebug或zend调试器来检查实际数据。