laravel多条件查询方法(and,or嵌套查询)


Posted in PHP onOctober 09, 2019

说明

在日常开发中,经常会需要写多条件的数据库查询语句。在使用框架的情况下,单纯使用原生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嵌套查询)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP中实现进程间通讯
Oct 09 PHP
坏狼的PHP学习教程之第1天
Jun 15 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
php画图实例
Nov 05 PHP
smarty内置函数capture用法分析
Jan 22 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
Nov 15 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
laravel 实现用户登录注销并限制功能
Oct 24 PHP
Laravel find in set排序实例
Oct 09 #PHP
对laravel in 查询的使用方法详解
Oct 09 #PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 #PHP
Laravel使用原生sql语句并调用的方法
Oct 09 #PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 #PHP
laravel执行php artisan migrate报错的解决方法
Oct 09 #PHP
解决Laravel 不能创建 migration 的问题
Oct 09 #PHP
You might like
Yii中render和renderPartial的区别
2014/09/03 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
2011/08/08 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
python pandas生成时间列表
2019/06/29 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
护士毕业生自荐信
2014/02/07 职场文书
工程部岗位职责范本
2015/04/11 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
python基础之模块的导入
2021/10/24 Python
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android