0

...

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

どうもありがとう!!

4

1 に答える 1