ThinkPHP5框架where实现or查询的两种方法


1.采用闭包方式 

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);
                })->select();
//生成的sql语句:
//SELECT * FROM `tp_table` WHERE  (  `user_id` = '1'  AND `status` = 0 ) OR (  `user_id` = '1'  AND `audit` IN ('1,2') )

2.普通方式

 
 $where = [
     'feed_uid'     => [ 'eq' , 5] ,
     'status' => [ [ 'eq' , 1] , [ 'eq' , 2 ] ,  [ 'eq' , 3 ] , 'or' ] ,
   ];
 $value = DealSpace::where($where)->count();
//最终的查询条件为where feed_uid=5 and (status=1 or status =2 or status =3 )

转载:https://blog.csdn.net/weixin_42330073/article/details/86496940

 

------------------------------------------------------------------------------------------------------------------------

            $where = ['fromid'=>$fromid,'toid'=>$toid];
            $whereOr = ['fromid'=>$toid,'toid'=>$fromid];

                $data = Db::name('workerman_communication')
                    ->where(function($query) use ($where){
                        $query->where($where);
                    })
                    ->whereOr(function($query) use ($whereOr){
                        $query->where($whereOr);
                    })
                    ->select();


            dump(Db::name('ht_workerman_communication')->getLastSql());die;
string(120) "SELECT * FROM `xq_workerman_communication` WHERE  (  `fromid` = 1  AND `toid` = 4 ) OR (  `fromid` = 4  AND `toid` = 1 )"

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM