ご覧いただきありがとうございます。
laravel 8.83.6で検索機能を実装しています
こちらのサイトを参考に
https://qiita.com/k-gen/items/3d76790879dde217ce27
検索フォーム(home.blade.php)にチェックボックスを作り
html
1<form action="{{url('/search')}}" method="post"> 2 @csrf 3 <div class="form-group"> 4 <label>目的で検索</label> 5 <div class="custom-control custom-checkbox"> 6 <input type="checkbox" class="custom-control-input" name="use[]" value="1">宴会 7 </div> 8 <div class="custom-control custom-checkbox"> 9 <input type="checkbox" class="custom-control-input" name="use[]" value="2">歓送迎会 10 </div> 11 <div class="custom-control custom-checkbox"> 12 <input type="checkbox" class="custom-control-input" name="use[]" value="3">少人数 13 </div> 14 <div class="custom-control custom-checkbox"> 15 <input type="checkbox" class="custom-control-input" name="use[]" value="4">女子会 16 </div> 17 </div> 18 19 20 <div class="text-center"> 21 <button type="submit" class="btn btn-primary col-md-5">検索</button> 22 </div> 23</form>
shopControllerのsearchメソッドで値を取得し、SQLの検索条件として使おうとしています
PHP
1public function search(Request $request){ 2 $keyword_use = ''; 3 if (isset($request->use)) { 4 $keyword_use = implode("\n",$request->use); 5 } 6 7 if(isset($keyword_use)){ 8 $query->where('use','like','%'.$keyword_use.'%'); 9 } 10 11}
データベースではuseカラムはvarchar型でカンマ区切りで数字を
保持しています(1,2など)
しかし、生成されたSQLを確認すると
チェックボックスにチェックを入れた時も値が入っていません
sql
1[2022-04-07 14:22:30] local.DEBUG: array ( 2 0 => 3 array ( 4 'query' => 'select * from `shops` where `use` like ?', 5 'bindings' => 6 array ( 7 0 => '%%', 8 ), 9 'time' => 6.17, 10 ), 11) 12
開発者ツールを確認するとチェックボックスを使っていない値は
ネットワークタブのペイロードタブのフォームデータに格納されているので
htmlの書き方が間違っているのでしょうか?
回答2件
あなたの回答
tips
プレビュー