Pra*_*nab 5 php mysql laravel laravel-5
我是 Laravel 新手,在获取记录时遇到一些问题。表结构如下:
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";}
Run Code Online (Sandbox Code Playgroud)
服务中存储的类别以序列化形式。
在表单中,我有根据主类别的下拉菜单,每个下拉菜单中都有子类别。
帖子数据采用以下格式:
数组( [0] => 数组( [0] => 1, [1] => 3, ), [1] => 数组( [0] => 2 ) )
流程 ID 像这样:每个主类别有 5 个下拉菜单,选项是它们的子类别,我想将“OR”条件放在子类别之间或相同的主类别之间,并将“AND”条件与另一组“OR”放在一起其他主要类别的条件。
在原始 SQL 中,我执行以下查询:
SELECT * FROM `services` WHERE (`categories` LIKE '%"1"%' OR `categories` LIKE '%"3"%') AND (`categories` LIKE '%"2"%')
Run Code Online (Sandbox Code Playgroud)
在 Laravel 中我尝试了以下操作:
$categories = [1,3];
\DB::table ('services')
->where(function($q) use ($categories) {
foreach($categories as $category) {
$q->where('services.categories', 'like', '%"'.DB::raw($category).'"%');
}
})
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。如何在 Laravel 中正确完成此操作。