あるテーブルを参照しているフォームタイプの中で、任意のレコード(今回はid = 0のレコード)を除外したいケースがあった。
フォームタイプの設定で可能か確認したところ下記のようにフォームタイプ上でクエリービルダーを作成すればいける。
$builder
->add('hoge', 'hoge_type', [
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('hoge')
->where('hoge.id != 0');
}
])
今回はid = 0のレコードが除外対象だったが、クエリを作成できるのでかなり応用が利きそう。
とはいえDB自体が整理されていれば特にやる機会もないので、まずはそっちを着手した方がいいかも。
(マスターのテーブルをカスタムフォームタイプとして定義していた。)