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 相关文章推荐
屏蔽浏览器缓存另类方法
Oct 09 PHP
PHP中基本符号及使用方法
Mar 23 PHP
php学习之 循环结构实现代码
Jun 09 PHP
基于php无限分类的深入理解
Jun 02 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 PHP
php数组使用规则分析
Feb 27 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
php pdo连接数据库操作示例
Nov 18 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
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
vue axios用法教程详解
2017/07/23 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
js 开发之autocomplete="off"在chrom中失效的解决办法
2017/09/28 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
Python使用numpy实现BP神经网络
2018/03/10 Python
PyQt5每天必学之组合框
2018/04/20 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
最小二乘法及其python实现详解
2020/02/24 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
python实现二分查找算法
2020/09/18 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
社区学习十八大感想
2014/01/22 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
培训班开班主持词
2015/07/02 职场文书
导游词之桂林山水
2019/09/20 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers