0

想象一个UserGroup(多对多)关联的实体。我需要显示用户详细信息(以及 - 比如说 - 组名或组数)。在我的控制器(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,不会执行任何 JOIN 操作Group。这在大多数情况下都很好。

但是当我尝试在我的视图中获取组数时会发生什么?

{% for user in users %}
    {{ user.groups|length }}
{% endfor %}

结果是:对每个 raw 执行一个查询。即查询的数量等于用户的数量。1000 个用户(没有分页)会发生什么?

如何获取User类的所有关联实体(即只发出一个查询)?

4

1 回答 1

2

您可以通过创建加入实体的自定义存储库方法来做到这一点。更多信息-> http://symfony.com/doc/master/book/doctrine.html#joining-related-records

于 2013-08-29T17:08:08.553 回答