首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Eloquent或查询构建器:在AND条件中使用or条件

Laravel Eloquent或查询构建器:在AND条件中使用or条件
EN

Stack Overflow用户
提问于 2016-08-22 21:11:06
回答 1查看 691关注 0票数 0

数据流:

4-5个主类别,每个主类别有10-15个子类别。属于少数类别的少数服务。类别作为序列化数据存储在服务表中,如下所示:

代码语言:javascript
复制
a:2:{i:0;s:1:"1";i:1;s:2:"3";}
a:1:{i:0;s:3:"2";}
a:1:{i:0;s:3:"3";}
a:2:{i:0;s:1:"1";i:1;s:3:"3";}

发布的表单数据如下:

代码语言:javascript
复制
array(
    [0] => array(
        [0] => 1,
        [1] => 3,
    ),
    [1] => array(
        [0] => 2
    ),
    ....
    ....
    ....
)

在同一主类别中的每个所选类别被分组到array.Also中的情况下,类别和子类别的数量是不固定的

用于获取记录的纯SQL

代码语言:javascript
复制
SELECT * FROM `services` WHERE (`categories` LIKE '%"1"%' OR `categories` LIKE '%"3"%') AND (`categories` LIKE '%"2"%') AND ( ... OR ...) AND ( ... OR ...) ....

我已经绑定了这个,但是这个似乎不起作用。

代码语言:javascript
复制
\DB::table ('services')
->where(function($q) use ($categories) {
    foreach($categories as $category) {
        $q->where('services.categories', 'like', '%"'.DB::raw($category).'"%');
    }
})
EN

回答 1

Stack Overflow用户

发布于 2016-08-22 21:23:44

使用查询构建器在Laravel中进行查询

代码语言:javascript
复制
$queryBuilder = \DB::table('services');

//loop to create dynamic where query
foreach($categories as $category){

        //create a query as (condition OR condition)
        $queryBuilder->where(function($query) use($category) {

            $query->where('categories', 'LIKE', "%" . $category[0] . "%");

            //if count is two then adding the or where clause 
            if(count($category) === 2){
                  $query->orWhere('categories', 'LIKE', "%" . $category[1] . "%");
            }

        });
    }
}

$result = $queryBuilder->get(); //executing the query to get result
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39080495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档