(多対多) と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 であるため、JOIN 操作Group
は実行されません。ほとんどの場合、これで問題ありません。
しかし、ビューでグループ数を取得しようとするとどうなりますか?
{% for user in users %}
{{ user.groups|length }}
{% endfor %}
その結果、生ごとに 1 つのクエリが実行されます。つまり、クエリの数はユーザーの数と同じです。1000 人のユーザー (およびページネーションなし) の場合はどうなりますか?
クラスに関連付けられているすべてのエンティティを取得するにはどうすればよいUser
ですか (つまり、クエリを 1 つだけ発行します)。