繁体   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