現在Laravelを使用して検索フォームの作成をしているのですが、
whereにANDとORが混在する場合の動作がうまく行かず悩んでおります。
php
1// 名前が存在すれば 2if(!empty($request->name)) { 3 $query->where('f_name', 'like', '%'.$request->author_name.'%'); 4} 5 6// タグが存在すれば 7if(!empty($request->tag)) { 8 $query->where('f_tag1', 'like', '%'.$request->keyword.'%') 9 ->orWhere('f_tag2', 'like', '%'.$request->keyword.'%') 10 ->orWhere('f_tag3', 'like', '%'.$request->keyword.'%') 11}
このようなコードで、検索窓は二つ存在します。
f_tag1〜f_tag3というフィールドとf_nameというフィールドが存在し、
- 名前検索の場合はnameとf_nameが一致する値
- タグの検索の場合はtagとf_tag1〜f_tag3の中のいずれが一致する値
- どちらにも値が入っていれば、nameとf_nameと値が一致し且つtagとf_tag1〜3のいずれかと
値が一致する値
を取得したいのですが、書き方のおかしい点をご指摘いただけないでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/13 14:06
2018/09/13 14:11