私はlaravelを初めて使用しています。レコードを取得する際にいくつか問題が発生しています。テーブルの構造は次のとおりです。Laravel 5.2 "AND"条件で "OR LIKE"を使用する方法
main_categories
------------------
id name
1 NNN
2 PPP
categories
-----------------------------------
id name main_category_id
-----------------------------------
1 abc 1
2 xyz 2
3 lmn 1
services
------------------
id categories
------------------
1 a:2:{i:0;s:1:"1";i:1;s:2:"3";}
2 a:1:{i:0;s:3:"2";}
3 a:1:{i:0;s:3:"3";}
4 a:2:{i:0;s:1:"1";i:1;s:3:"3";}
サービスに格納されているカテゴリは、シリアル化された形式です。
フォームにはメインカテゴリに従ってドロップダウンがあり、各ドロップダウンにはサブカテゴリがあります。
データがこの形式であるポスト:
アレイ( [0] =>配列( [0] => 1、 [1] => 3、 )、 [1] = >配列( [0] => 2 ) )
このようなプロセスID:5つの主なカテゴリごとのようにドロップダウンやオプションが自分のサブカテゴリーであり、私はサブの間で条件を入れて「OR」にしたいですカテゴリーまたは同じメインカテゴリーと、他のメインケートの「OR」条件の他のセットとの「AND」条件ゴリー生のSQLで
私はこのクエリを実行します。Laravelで
SELECT * FROM `services` WHERE (`categories` LIKE '%"1"%' OR `categories` LIKE '%"3"%') AND (`categories` LIKE '%"2"%')
私は次のことを試してみました:
$categories = [1,3];
\DB::table ('services')
->where(function($q) use ($categories) {
foreach($categories as $category) {
$q->where('services.categories', 'like', '%"'.DB::raw($category).'"%');
}
})
しかし、これは動作しません。どのようにこれがLaravelで適切に行われるか。
uを使用することができます 'orwhere' https://laravel.com/docs/5.2/queries#advanced-where-clauses – WalksAway
@WalksAwayは、私はこれを試してみましたが、それはあります働いていない。それはカテゴリーが1または3のすべてのサービスを取得しますが、カテゴリーとして1,3を両方持つサービスのみが必要です – Pranab
@WalksAway私は自分の質問を更新しました。今すぐチェックしてください – Pranab