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
dede3.1分页文字采集过滤规则详说(图文教程)续二
Apr 03 PHP
php中转义mysql语句的实现代码
Jun 24 PHP
php字符串截取的简单方法
Jul 04 PHP
php获取当前时间的毫秒数的方法
Jan 26 PHP
PHP闭包实例解析
Sep 08 PHP
Opcache导致php-fpm崩溃nginx返回502
Mar 02 PHP
PHP版微信公众平台红包API
Apr 02 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
php实现数据库的增删改查
Feb 26 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 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
PHP的类 功能齐全的发送邮件类
2006/10/09 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
layui实现三级联动效果
2019/07/26 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
javascript+css实现进度条效果
2020/03/25 Javascript
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
Django中create和save方法的不同
2019/08/13 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
python计算导数并绘图的实例
2020/02/29 Python
python 异步async库的使用说明
2020/05/04 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
大学毕业感言一句话
2014/02/06 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Redis如何实现分布式锁
2021/08/23 Redis
德生BCL3000抢先使用感受和评价
2022/04/07 无线电