...
やあ!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 に構成する何かがありますか?
どうもありがとう!!