想象一个与User
(多对多)关联的Group
实体。我需要显示用户详细信息(以及 - 比如 - 组名称或组计数)。在我的控制器(Symfony 2)中,我可以获得所有用户:
$users = $this->em->getRepository('My\Entity\User')
->getAll();
// Assign $users to whatever the view engine
return $this->render('users.html.twig', array('users' => $users));
当然,默认情况下,作为LAZY关联,不会执行Group
的JOIN操作。这在大多数时候都很好。
但是当我在我的视野中尝试获得小组计数时会发生什么?
{% for user in users %}
{{ user.groups|length }}
{% endfor %}
结果是:为每个原始执行一个查询。也就是说,查询的数量等于用户的数量。 1000个用户(没有分页)会发生什么?
如何获取User
类的所有关联实体(即只发出一个查询)?
答案 0 :(得分:2)
您可以通过创建自定义存储库方法来加入实体。 更多信息 - > http://symfony.com/doc/master/book/doctrine.html#joining-related-records