本文中使用的Laravel框架版本:Laravel Framework 8.53.1
在laravel框架中如何实现 where field1 = 1 and ( field2 = 2 or field3 = 3 ) and field4 = 4 等这种类似的 需要 and 和 or 联合起来的复杂查询语句?
实现代码示例如下:
//DB::enableQueryLog();
$list = DB::table('user')
    ->where(function ($query) {  //闭包返回的条件会包含在括号中
           $query->where('id', 1)
            ->where(function($query){
                $query->where('realname' , '周总');
                $query->orWhere('login_num', '>', 500);
            });
    })
    ->where('gender', 1)
    ->get();
//echo "<pre/>";
//print_r(DB::getQueryLog());用DB::getQueryLog(); 输出实际执行的SQ语句如下:
Array ( [0] => Array ( [query] => select * from `user` where (`id` = ? and (`realname` = ? or `login_num` > ?)) and `gender` = ? [bindings] => Array ( [0] => 1 [1] => 周总 [2] => 500 [3] => 1 ) [time] => 4 ) )
即:
select * from `user` where (`id` = 1 and (`realname` = '周总' or `login_num` > 500)) and `gender` = 1
其它类似代码示例如下:
//DB::enableQueryLog();
$list = DB::table('user')
    ->where(function ($query) {  //闭包返回的条件会包含在括号中
        return $query->where('id', 1)
            ->orWhere([
                ['realname', '周总'],
                ['login_num', '>', 500]
            ]);
    })
    ->where('gender', 1)
    ->get();
    
//print_r(DB::getQueryLog());
用DB::getQueryLog(); 输出实际L执行的SQ语句如下:
select * from `user` where (`id` = 1 or (`realname` = '周总' and `login_num` > 500)) and `gender` = 1
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
 
						

 
					 
					 
					
精彩评论