をフェッチから私はAccount
エンティティと1対多の関連性を持っているUser
実体を持って防止教義関連企業
$builder = $this->getEntityManager()->createQueryBuilder()
->select('U')
->from('Model:User', 'U')
->leftJoin('U.accounts', 'A')
;
しかし、ユーザーのフェッチされたアカウントにアクセスしようとすると、Doctrineが各ユーザーのアカウントを取得するためにデータベースに追加のクエリを行っていることがわかります。
foreach ($users as $user) {
foreach ($user->getAccounts() as $account) {
// This triggers additional Doctrine query.
var_dump($account->getId());
}
}
私は、バッチジョブとして、このコードを実行していると私はアカウントでプリロードユーザーが最大限のパフォーマンスを達成するために、後で追加のクエリを発行しないようにしたいです。
Doctrineが追加のクエリを作成する理由とこれを防ぐ方法を教えてください。
私はOneToMany
アソシエーションにfetch="EXTRA_LAZY"
オプションを使用しようとしましたが、運がなくても結果は同じです。
- > select( 'U、A') – Cerad