My Symfony(3.3)フォームEntityTypeは選択入力として表示され、データベースにあるすべてのクライアントをリストします。クライアントエンティティは、レイジーモードを使用するいくつかの他のエンティティに関連付けられています。
選択ボックスをレンダリングすると、204個のDBクエリが発行されます。私はフォームコンポーネントがそれぞれのクエリ結果に対してセッターを呼び出すため、多くの追加のデータベースクエリをロードすることになります。Symfony - EntityType querybuilderのハイドレーションプロセス中の関連フィールドを破棄します
データを強制的に結果の一部にするために、フォームのquerybuilderオプション内のjoin( '...') - > addSelect( '...')メソッドを使用して、 "EAGER"いくつかの事業体が関与している場合、水分補給プロセスは依然としてコストがかかる。
私はDoctrine Query HINTを使って問題を解決したいと考えましたが、何も変わっていませんでした。
次に、このようなユースケースにはどのような方法がありますか?
ドロップダウン入力に入力する必要があるフィールドのみを取得するにはどうすればよいですか?ここで
は、私がこれまで試したものです:
$builder->add('parent', EntityType::class, [
'class' => Client::class,
,'required' => false
,'multiple' => false
,'query_builder' => function (EntityRepository $er) {
$qb = $er ->createQueryBuilder('c')
// All I want doctrine to fetch are the following fields
->select('PARTIAL c.{id,uuid,name,shortName}');
// I expected this flag to help but it does not change the total amount of queries executed
$qb->getQuery()->setHint(Query::HINT_FORCE_PARTIAL_LOAD, true);
return $qb;
}
])…
ありがとうございました。
を解決