本文中使用的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
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论