ThinkPHP5框架where如何实现or查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oZhengTuoJiaSuo/article/details/82383519

 ThinkPHP5框架where 内部实现 精选or 条件拼接,一直没有找到合适的方法,不像tp3版本可以使用采用以下方法:

$map['user_id'] = 1;
$map['status'] = 0;
$or_map['user_id'] = 1;
$or_map['audit']=['in',['1,2']];
$where_main['_complex'] = array(
    $map,
    $or_map,
    '_logic' => 'or'
);

$this->table->where($where_main)->select();
tp5中采用闭包的方式:
$map['user_id']=1;
$map['status']=0;
$or_map['user_id']=$map['user_id'];
$or_map['audit']=['in',['1,2']];
$list = Db::name('table')->where(function ($query) use ($map) {
                    $query->where($map);
                })->whereOr(function ($query) use ($or_map) {
                    $query->where($or_map);
                })->limit(0,$pn*$page_size)->select();
生成的sql语句:
SELECT * FROM `tp_table` WHERE  (  `user_id` = '1'  AND `status` = 0 ) OR (  `user_id` = '1'  AND `audit` IN ('1,2') )

猜你喜欢

转载自blog.csdn.net/oZhengTuoJiaSuo/article/details/82383519