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 相关文章推荐
在VS2008中编译MYSQL5.1.48的方法
Jul 03 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
php定时执行任务设置详解
Feb 06 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
10款实用的PHP开源工具
Oct 23 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
php实现的顺序线性表示例
May 04 PHP
php求斐波那契数的两种实现方式【递归与递推】
Sep 09 PHP
Laravel框架源码解析之入口文件原理分析
May 14 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
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
python读写二进制文件的方法
2015/05/09 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
python一键去抖音视频水印工具
2018/09/14 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
python  logging日志打印过程解析
2019/10/22 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
农村党支部先进事迹
2014/01/14 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server