laravel多条件查询方法(and,or嵌套查询)
说明
在日常开发中,经常会需要写多条件的数据库查询语句。在使用框架的情况下,单纯使用原生sql查询会导致结果与model无法对应,也就没有办法使用框架的一些便利的方法对结果集进行处理。尤其是laravel提供了非常多的对查询结果集进行处理的工具。所以最好是使用laravel提供的ORM进行多条件的数据库查询。
问题
比如需要执行这样一条sql语句
select * from homework where (id between 1 and 10 or id between 50 and 70) and complete = 1 and (title like 'a%' or title like 'b%');
解决方式
$homeworks = Homework::where(function ($query) { $query->whereBetween('id', [1, 10]) ->orWhereBetween('id', [50, 70]); })->where('complete', 1) ->where(function ($query) { $query->where('title', 'like', 'a%') ->orWhere('title', 'like', 'b%'); })->get();
总结
使用ORM查询数据可以得到model数据集,能更方便的处理数据。
laravel的where方法使用闭包可以有效的构建嵌套的where子句(在这里,使用where的闭包相当于在构建sql的时候加一个括号
以上这篇laravel多条件查询方法(and,or嵌套查询)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Laravel模糊查询区分大小写的实例
Laravel的ORM特殊操作! 举个例子:我们数据库设计的编码方式如果是ci,也就是说大小写不敏感的话,我们搜索的时候,搜索test,那么结果是Test,test,teST等等都出来,但是我们加上like binary的话,那么搜索出来的就是test,不管你的mysql数据库是什么编码排序规则. #passthru: array:10 [▼ 0 => "insert" 1 => "insertGetId" 2 => "getBindin
-
对laravel in 查询的使用方法详解
今天遇到多条件搜索,其中需要用到in查询,但是laravel不支持 [ 'type', 'in', '1,2,3'] 这样的写法 经过一波百度,也没发现什么好的方法. 其中一种方法是: $where = function ($query) {$query->whereIn('id', [1,2])->orWhere('d_id', '=', '83');} 这样确实可以解决,是一种解决方法.但我总觉得还有更好的方法,找到了 DB::Raw(); 开始我是这样用的 但是这样总会在sql后面出现i
-
laravel多条件查询方法(and,or嵌套查询)
说明 在日常开发中,经常会需要写多条件的数据库查询语句.在使用框架的情况下,单纯使用原生sql查询会导致结果与model无法对应,也就没有办法使用框架的一些便利的方法对结果集进行处理.尤其是laravel提供了非常多的对查询结果集进行处理的工具.所以最好是使用laravel提供的ORM进行多条件的数据库查询. 问题 比如需要执行这样一条sql语句 select * from homework where (id between 1 and 10 or id between 50 and 70)
-
Fluent Mybatis零xml配置实现复杂嵌套查询
目录 嵌套查询 in (select 子查询) exists (select子查询) 嵌套查询 使用Fluent Mybatis, 不用手写一行xml文件或者Mapper文件,在dao类中即可使用java api构造中比较复杂的嵌套查询. 让dao的代码逻辑和sql逻辑合二为一. 前置准备,maven工程设置 参考文章 使用FluentMybatis实现mybatis动态sql拼装和fluent api语法 in (select 子查询) 嵌套查询表和主查询表一样的场景 .column().in
-
详解Spring Data JPA中Repository的接口查询方法
目录 1.查询方法定义详解 2.搜索查询策略 3.查询创建 4.属性表达式 5.特殊参数处理 6.限制查询结果 7. repository方法返回Collections or Iterables 8.repository方法处理Null 9.查询结果流 10.异步查询结果 1.查询方法定义详解 repository代理有两种方式从方法名中派生出特定存储查询. 通过直接从方法名派生查询. 通过使用一个手动定义的查询. 可用的选项取决于实际的商店.然而,必须有一个策略来决定创建什么实际的查询. 2.
-
MyBatis的嵌套查询解析
Mybatis表现关联关系比hibernate简单,没有分那么细致one-to-many.many-to-one.one-to-one.而是只有两种association(一).collection(多),表现很简洁.下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的. 以最简单的用户表订单表这个最简单的一对多做示例: 对应的JavaBean: User: public class User { private int id; private String
-
mybatis 集合嵌套查询和集合嵌套结果的区别说明
目录 集合嵌套查询和集合嵌套结果的区别 1.创建2张表,建立主外键关系 2.建立实体类 3.修改配置文件 4.建立映射文件 5.创建测试类 MyBatis 嵌套查询解析 对应的JavaBean 对应的数据库 嵌套语句查询 嵌套语句查询的原理 嵌套查询的多对一 嵌套查询的N+1问题 嵌套结果查询 嵌套结果查询的执行步骤 集合嵌套查询和集合嵌套结果的区别 嵌套查询是多条sql语句分开写并配置,嵌套结果是一条sql语句关联查询并配置,实质效果是一样的.嵌套语句的查询会导致数据库访问次数不定,进而有可能
-
Laravel关系模型指定条件查询方法
对于关系模型来说,有时候我们需要甄别关联后结果,例如,班级和学生是一对多关联,我现在查询班级,但是想只显示正常状态,即状态为1的学生,因为有的学生从这个班级里面删除了,状态是4,那么我们在查询的时候就可以使用如下语法: 1.定义关联关系: Class模型: public function learners() { return $this->belongsToMany('App\Models\Customer', 'learner_relation', 'class_id', 'learner_
-
lambdaQueryWrapper多条件嵌套查询方式
目录 lambdaQueryWrapper多条件嵌套查询 表结构如下 下面是根据条件生成的SQL语句 LambdaQueryWrapper 常用条件 lambdaQueryWrapper多条件嵌套查询 需求:根据条件获取一段时期内按照年份和周存储的数据 表结构如下 userNetType moduleName cityName subjectCname subjectEname pv uv year week 1 1 江苏省 死神专题 sszt 100 70 2019 51 1 1 江苏省 海贼
-
MySQL嵌套查询实现子查询的方法
目录 一个查询语句嵌套在另一个查询语句内部的查询 1.带ANY(SOME)关键字的子查询 2.带ALL关键字的子查询 3.带EXISTS关键字的子查询 4.带IN关键字的子查询 5.带比较运算符的子查询 一个查询语句嵌套在另一个查询语句内部的查询 常用操作符:ANY(SOME), ALL, IN, EXISTS 比较运算符:>, >=, <, <=, != 等 创建两个表,表明分别是tb1,tb2,并向其各插入了数据. 1.带ANY(SOME)关键字的子查询 这里any和some是
-
mysql嵌套查询和联表查询优化方法
嵌套查询糟糕的优化在上面我提到过,不考虑特殊的情况,联表查询要比嵌套查询更有效.尽管两条查询表达的是同样的意思,尽管你的计划是告诉服务器要做什么,然后让它决定怎么做,但有时候你非得告诉它改怎么做.否则优化器可能会做傻事.我最近就碰到这样的情况.这几个表是三层分级关系:category, subcategory和item.有几千条记录在category表,几百条记录在subcategory表,以及几百万条在item表.你可以忽略category表了,我只是交代一下背景,以下查询语句都不涉及到它.这
-
MyBatis实现两种查询树形数据的方法详解(嵌套结果集和递归查询)
目录 方法一:使用嵌套结果集实现 1,准备工作 2,实现代码 方法二:使用递归查询实现 树形结构数据在开发中十分常见,比如:菜单数.组织树, 利用 MyBatis 提供嵌套查询功能可以很方便地实现这个功能需求.而其具体地实现方法又有两种,下面分别通过样例进行演示. 方法一:使用嵌套结果集实现 1,准备工作 (1)假设我们有如下一张菜单表 menu,其中子菜单通过 parendId 与父菜单的 id 进行关联: (2)对应的实体类如下: @Setter @Getter public class M
随机推荐
- 四步轻松实现ajax发送异步请求
- javascript 不让鼠标事件触发
- 三十分钟掌握STL-教程
- JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
- JS在可编辑的div中的光标位置插入内容的方法
- Go语言实现socket实例
- Flume环境部署和配置详解及案例大全
- Java线程安全问题小结_动力节点Java学院整理
- 在oracle 数据库中查看一个sql语句的执行时间和SP2-0027错误
- Oracle实现动态SQL的拼装要领
- android 默认时间格式修改方法
- Bootstrap组件学习之导航、标签、面包屑导航(精品)
- 走马灯效果代码js appendChild实现的无缝滚动
- sql清空表数据后重新添加数据存储过程的示例
- 关于juqery radio写法的兼容性问题(新老版本jquery)
- 浅谈javascript语法和定时函数
- zTree插件之单选下拉菜单实例代码
- C++运行时获取类型信息的type_info类与bad_typeid异常
- java算法之二分查找法的实例详解
- C++中引用(&)的用法与应用实例分析