[EC-CUBE3]フォームタイプで任意のレコードを除外する

あるテーブルを参照しているフォームタイプの中で、任意のレコード(今回はid = 0のレコード)を除外したいケースがあった。
フォームタイプの設定で可能か確認したところ下記のようにフォームタイプ上でクエリービルダーを作成すればいける。

$builder
  ->add('hoge', 'hoge_type', [
    'query_builder' => function(EntityRepository $er) {
      return $er->createQueryBuilder('hoge')
        ->where('hoge.id != 0');
  }
])

今回はid = 0のレコードが除外対象だったが、クエリを作成できるのでかなり応用が利きそう。
とはいえDB自体が整理されていれば特にやる機会もないので、まずはそっちを着手した方がいいかも。
(マスターのテーブルをカスタムフォームタイプとして定義していた。)

参考

EntityType Field -Using a Custom Query for the Entities-

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

12 − eleven =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください