実現したいこと
foreachに配列を入れて、それを用いてsql文のwhereが(A or B) AND (C or D) AND...になるような感じにしたい
発生している問題・分からないこと
ループを使わない最終的な処理の形は把握できているんですが、foreachを組み込んでやろうとするとどう変えていいのかがわからなくなってしまいます。
下記ソースコードの$arrayには検索をかける名前の配列が二次元配列で入っています。
該当のソースコード
PHP
1 $sql = sample::select(['favorite', 'number']) 2 ->where(function ($query) use ($array){ 3 foreach($array as $search_name){ 4 $query->where('name', 'LIKE', '%'.$search_name[0].'%') 5 ->orWhere('name', 'LIKE', '%'.$search_name[1].'%'); 6 } 7 })->get();
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ループの中に$queryをもう1つ作ればできたりするのでは?と思い、$query->where(function ($query) use ($search_name)と入れてみたりしたのですが、うまいこと動かせずに詰まってしまいました。
補足
php 8.2.15
Laravel 10.48.4
はじめまして!
私も現在似たようなところで詰まっているのですが、こちらのコードを実行すると最終的にどういったSQL文が組み立てられるのか教えていただけないでしょうか。

回答1件
あなたの回答
tips
プレビュー