質問: PHP(laravel 5.5.21)でDBを検索するフォームを勉強を兼ねて作っています。 検索フォームにプルダウンメニューを複数設置(最終的には7つ以上置こうと思っています)し、AND検索をさせようとしています。 各プルダウンメニューは、テーブルのそれぞれのカラムに対して検索条件を設定するようになっています。 現在、各プルダウンメニューに検索条件をセットした状態で、DBから検索結果が正しく表示される動きは実現できています。 しばらく触っていて、各メニューに「こだわらない」という選択肢がないと不便なのに気づきましたが、どうやって実現すればよいのでしょうか? Formヘルパーを使った記述も教えたいただけるとありがたいです。 よろしくお願いします。 ・controllerのクエリ部分のコード $query->where('c1',$menu1)->where('c2',$menu2); ・viewのメニュー部分のコード 1 2 3 1 2 3
回答: セレクトボックスに空の値のものなどを作って、クエリビルダーの作成時に、whenメソッドで条件によりクエリを追加するようにするとシンプルに実現できます。 Laravel 5.5 データベース:クエリビルダ 条件節 ``` ``` 1 2 3 こわだわらない ``` ``` $query->when($menu1,function($q) use($menu1){ $q->where('c1',$menu1); })->when($menu2,function($q) use($menu2){ $q->where('c2',$menu2); }); ``` フォームヘルパーが使いたい場合は、以下のドキュメントなどを自身で確認してみてください。 Forms & HTML