簡體   English   中英

Doctrine MongoDB加載相關文檔以提高性能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM