Laravel复杂的'OR'与'AND'条件联合查询
2018-10-10 15:44
525 查看
版权声明:本文为博主原创文章,欢迎交流分享,未经博主允许不得转载。 https://blog.csdn.net/Jeffid/article/details/82998215
需求场景:查询中有部份条件是固定带上的,有部份条件是多选一的。
假定有数据表
users,其中有字段
id、
name、
age、
sex,要求查出如伪代码:
(id==3 && sex==1) OR (name=="jay" && age>18 && sex==1)示意的结果,即sex固定等于1,id等于3或者是 age>18且name等于jay。
查询构造器的示例:
//DB::enableQueryLog(); DB::table('users') ->where(function ($q) { //闭包返回的条件会包含在括号中 return $q->where('id', 3) ->orWhere([ ['name', 'jay'], ['age', '>', '18'] ]); }) ->where('sex', 1) ->get(); //dd(DB::getQueryLog()); //查看SQL语句, 须配合enableQueryLog()使用[/code]
用
DB::getQueryLog()l输出的实际SQL执行语句:
array:1 [▼ 0 => array:3 [▼ "query" => "select * from `users` where (`id` = ? or (`name` = ? and `age` > ?)) and `sex` = ?" "bindings" => array:4 [▼ 0 => 3 1 => "jay" 2 => "18" 3 => 1 ] "time" => 6.43 ] ][/code]
即:
"select * from `users` where (`id` = 3 or (`name` = "jay" and `age` > 18)) and `sex` = 1"[/code]
上面的示例是查询构造器的写法,Eloquent ORM也同样适用。
阅读更多相关文章推荐
- 联合两个索引查询,已解决: 还有个进行多条件搜索 and 与 or 的操作
- Thinkphp 查询条件 and 和 or同时使用即复合查询
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
- iBatis中联合AND和OR进行查询
- mybatis 使用 and和or联合查询
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
- 将不确定变为确定~表达式树是否可以有个集合,条件过滤有了新方向续(新增了OR和AND查询)
- mybatis 使用 and和or联合查询
- Elasticsearch进行and,or多条件组合DSL结构化查询
- Lucene进阶:and 和or的条件查询
- thinkphp框架中查询条件or和and搭配问题
- mysql同时用and和or关联查询条件,并且值包含null所遇到的坑
- Thinkphp 查询条件 and 和 or同时使用即复合查询
- mybatis example 使用AND 和OR 联合查询
- SQLServer复合查询条件(AND,OR,NOT)对NULL值的处理方法
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理
- mybatis 拼装 and和or 查询条件
- mongo java中and、or多条件查询
- Lucene进阶:and 和or的条件查询
- Thinkphp 查询条件 and 和 or同时使用即复合查询