

初めて質問させていただきます。  
今までExcelで管理していたレンタルサービスの管理表をシステム化することになりました。  
社内案件と言うこともあり、Symfony4にて実装しようと思っているのですが、  
Formのセレクトボックスの扱い方に苦慮しています。  
データベースの全件を対象とするのであれば、

[code]

    $builder
      ->add('物品リスト',物品リストType::class,[
        'class' => 物品リスト::class
        ,'choice_label' => 'name'
      ])
      ->以下略
    
[/code]

とすればいいのですが、この中から貸し出し可能なものだけをセレクトボックスに表示することが出来ません。  
物品リストは貸出リストとOneToManyで紐づいていて、貸出リストを持っていないのが貸出可能物品となります。  
物品リストのRepositoryにメソッドを追加して、貸出可能な物の情報だけを返すことは出来ているのですが、どうすればそれをFoamに組み込めるのでしょうか。  
どうぞよろしくお願いいたします。


CC BY-SA 4.0
2018-07-31T11:25:09.130
47135
2018-08-01T05:11:14.363
2018-07-31T18:28:43.550
29537
29537
question
php symfony2 doctrine2
Symfony4のFormで条件に合うものだけセレクトボックスに表示したい。


自己解決しました。  
外からデータを渡すのではなく、query_builderをつけることで望む結果が得れました。

[code]

    $builder
      ->add('物品リスト',物品リストType::class,[
    'class' => 物品リスト::class
    ,'choice_label' => 'name'
    ,'query_builder' => function (EntityRepository $repository) {
         return $repository->createQueryBuilder('l')
           ->leftJoin('l.貸出リスト', 'h')
           ->andWhere('h is null')
           ->orderBy('l.name', 'ASC');
       }
    
[/code]

実際にはlabelとかも指定してますが、必要な部分を書き出しておきます。


CC BY-SA 4.0
2018-08-01T05:11:14.363
47152
2018-08-01T05:11:14.363
29537
47135
answer