4

Symfony2.1フォームでエンティティ フィールド タイプを使用しています。ここでは、param を使用して、長く複雑なクエリに一致するエンティティのみを返します (公式ドキュメントの例を参照してください)。query_builder

明らかにquery_builder、エンティティ フィールド タイプのパラメーターは Doctrine QueryBuilderオブジェクトを受け入れます。一方、 Doctrine Queryオブジェクトを返すEntityManagerの関数によって取得された複雑な DQL クエリを含む大規模なエンティティ リポジトリがあります。したがって、これらすべてのクエリをエンティティ フィールド タイプで直接使用することはできません。さらに、QueryBuilder で使用するためにすべてのクエリを書き直すのはナンセンスです。createQuery()

QueryオブジェクトからQueryBuilderオブジェクトに自動的に変換する方法はありますか?

4

1 に答える 1

1

Symfony2 ドキュメントから:

query_builder - タイプ:Doctrine\ORM\QueryBuilderまたはClosure<---

指定されている場合、これは、フィールドに使用する必要があるオプションのサブセット (およびその順序) を照会するために使用されます。このオプションの値は、QueryBuilderオブジェクトまたはClosure. を使用する場合は、エンティティClosureの である単一の引数を取る必要があります。EntityRepository

今、私は例を試す時間がありませんでしたが、使用すると、ターゲット エンティティ オブジェクトの(または少なくとも) をClosure返すことができるように思えます。あなたは引数としてオブジェクトを取得するので、そのすべてを書き直す必要はありません。ArrayCollectionarrayClosureEntityRepository

試してみませんか?:)

アップデート

・・・お待たせしてすみません・・・

このままでは無理のようです。代わりに、choiceフォーム タイプとフィード エンティティ オブジェクト (または私が行ったようにオブジェクト リポジトリ) を手動で使用する必要があります。

ここで簡単な例をいくつか作成しました: http://ideone.com/LHdi2E

お役に立てれば...

于 2012-11-08T09:04:01.830 に答える