【发布时间】:2014-09-20 12:51:59
【问题描述】:
我有一些引用了许多项目的用户文档。
用户:
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 请求时加载所有项目?我希望仅在需要时执行此操作(不是在实体定义中,而是在查询级别)。
【问题讨论】:
标签: php mongodb symfony doctrine-orm doctrine