Symfony2加入了传递给View的数据

时间:2014-10-17 14:31:37

标签: symfony join twig

我将一些数据传递给已加入的视图。连接工作正常,因为我可以根据是选择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等按预期显示)。

1 个答案:

答案 0 :(得分:1)

选择联接:

您还需要选择加入的实体:

 $query = $repository->createQueryBuilder('p')
    ->addSelect('s')
    ->join('p.skill', 's')
    ->getQuery();

转储:

Doctrine2填充的变量是您自己的实体类的代理类,它们引用了Doctrine2内部。在这些情况下,递归迫在眉睫。通过递归,您将始终达到内存限制。

因此,有几种调试方法,例如使用xdebug或zend调试器来检查实际数据。