...
你好!使用 Doctrine 2.3,我试图以数组的形式获取用户及其组的列表(进行更改:))。
所以我定义了这样的用户类:
/**
* @Entity
**/
class User {
/**
* @ManyToMany(targetEntity="Group")
* @var Group[]
**/
protected $groups;
...
}
和小组课:
/**
* @Entity
**/
class Goup {
/**
* @ManyToMany(targetEntity="User)
* @var User[]
**/
protected $users;
...
}
然后我有 10'000 个用户和 100 个组,每个用户可以有几个组。我想以只读方式检索前 200 个用户及其组。
如何使用阵列水合来实现这一目标?可能吗?
我试过了:
$query = new \Doctrine\ORM\QueryBuilder($em);
$query
->select('u, g')
->from('User', 'u')
->leftJoin('Group', 'g')
->setFirstResult(0)
->setMaxResults(200)
->getQuery()
->getArrayResult();
但我没有得到 200 个用户。由于加入,我假设有 40 或 50 个用户(这是正常的,因为 200 的限制考虑了组)。我知道使用惰性(或急切?)负载和代理,我可以推迟组的负载,但这里我有一个数组,所以我不能调用任何方法。
是否有要在某处添加的注释,或者要配置到 QueryBuilder 或 Query 的东西?
非常感谢!!