2013-08-29 53 views
0

想象一下User實體與Group(多對多)的關聯。我需要顯示用戶詳細信息(以及 - 說 - 組名或組數)。在我的控制器(Symfony的2)我可以得到所有用戶:如何在使用Doctrine計數關聯實體時避免大量查詢?

$users = $this->em->getRepository('My\Entity\User') 
    ->getAll(); 

// Assign $users to whatever the view engine 
return $this->render('users.html.twig', array('users' => $users)); 

當然,在默認情況下是該協會懶惰,沒有JOIN執行與Group操作。大多數情況下這是很好的。

但是當我嘗試在我的視圖中獲取組數時發生了什麼?

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

結果是:對每個原始數據執行一次查詢。也就是說,查詢的數量等於用戶的數量。 1000位用戶(並且沒有分頁)會發生什麼?

如何獲取User類的所有關聯實體(即只發出一個查詢)?

+0

EXTRA-LAZY協會怎麼樣? – manix

回答

相關問題