実現したいこと
検索条件をforeachで回しながら、SQL文が【"select * from table where (A or B) and C" and... 】といった状態になるようにしたいです(AとBにforeachで回す配列の値が入り、C以降に他の検索条件が追加される)。
発生している問題・分からないこと
Laravelにて検索機能の実装をしようとしているのですが、OR/ANDの複合条件のSQL文組み立てが上手くいかず困っております。
現状下記のような記述となっており、実行すると
【"select * from manager where (name LIKE ?) and (name LIKE ?) and authority in (?)"】
といったSQLがとれます。
どなたかアドバイスいただけますと幸いです。
該当のソースコード
php(Laravel)
1$searchName = $request->input('employeeName'); 2$cleanedSearchName = str_replace([' ', ' '], ',', $searchName); 3$name_array = explode(",", $cleanedSearchName); 4 5$employeeList = DB::table('manager'); 6if (!empty($searchName)) { 7 foreach($name_array as $searchName_array){ 8 $employeeList->where(function($employeeList) use($searchName_array){ 9 $employeeList->orwhere ('name', 'LIKE', '%'.$searchName_array.'%'); 10 }); 11 } 12 }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
色々と調べ実践してみたものの、思うように動かなかったため質問いたしました。
補足
特になし
![guest](/img/icon/icnUserSample.jpg)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。