[英]Doctrine MongoDB load associated documents for performance
我有一些參考許多項目的用戶文檔。
用戶:
class User
{
//...
/**
* @ODM\ReferenceMany(targetDocument="Item", mappedBy="user", cascade={"remove"})
*/
protected $items;
//...
項目:
class Item
{
/**
* @ODM\ReferenceOne(targetDocument="User", inversedBy="items")
*/
protected $user;
我想顯示所有用戶的列表以及項目數。 所以我有一個查詢:
$users = $dm->getRepository('Acme:User')->findAll();
我在“項目”字段上使用count
方法
{% for user in users %}
// ...
{{ document.items.count }} items
// ...
{% endfor %}
問題在於, Doctrine為每個用戶創建了一個新請求,這導致了內存限制和超時。
當findAll請求時,是否有一種方法可以告訴教義加載所有項目? 我希望僅在需要時才執行此操作(不在實體定義中,而是在查詢級別)。
默認情況下,主義會進行一些延遲加載,例如,直到請求數據時,它才提取數據。 如果希望避開延遲加載,則需要獲取聯接而不是常規聯接。
http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#joins
這要求您編寫自己的查詢,因為“ findAll()”將不會成為您的朋友。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.