用闭包写法优化laravel多条件查询
当需要创建较复杂的where子句,以避免部分条件全局应用或更好的使用索引时,如orWhere、whereIn等,可以用闭包函数优化查询。
laravel闭包查询格式:
function ($query,$param1,$param2,...) {$query->where('column1', '=', $param1)->where('column2', '=', $param2);}
通过一个 闭包函数 写入 条件 方法构建一个查询构造器 来约束一个分组。这个 闭包函数 接收一个查询实例$query及参数,你可以使用这个实例来设置应该包含的约束。
orWhere闭包查询示例:
DB::table('users')
->where('name', '=', 'John')
->where(function ($query,$type,$vote) {$query->where('votes', '>', $vote)->orWhere('type', '=', $type);})->get();
上面的例子将生成以下 SQL:
select * from users where name = 'John' and (votes > 100 or title = 'Admin')
whereIn查询示例:
$list = $this->select('job_id','exam_id','article_id','province','city','region','work_company','super_company','position_code','position')->selectRaw(sprintf('%s as score',$indexField))->whereIn('job_id', function($query) use ($where) {$query->from('job_interview')->select('job_id')->where($where);})->where($scoreWhere)->orderBy($indexField,'desc')->skip($start)->take($pagesize)->get();
用闭包写法优化laravel多条件查询相关推荐
- laravel多条件查询方法(and,or嵌套查询)
比如需要执行这样一条sql语句 select * from proofing_notice where (id between 1 and 10 or id between 50 and 70) an ...
- Laravel 使用数组条件查询时 in和or 的用法
laravel给出了whereIn的用法: $users = DB::table('users')->whereIn('id', [1, 2, 3])->get(); 或者在闭包中使用wh ...
- php8预加载,如何利用预加载优化Laravel Model查询详解
前言 本文主要给大家介绍了关于利用预加载优化Laravel Model查询的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 介绍 对象关系映射(ORM)使数据库的工作变得非常简单 ...
- php ci model条件查询,Laravel关系模型指定条件查询方法
对于关系模型来说,有时候我们需要甄别关联后结果,例如,班级和学生是一对多关联,我现在查询班级,但是想只显示正常状态,即状态为1的学生,因为有的学生从这个班级里面删除了,状态是4,那么我们在查询的时候就 ...
- mysql in和or扫描全表_MySQL对OR条件查询不支持优化,会进行全表扫描
MySQL对OR条件查询不支持优化,会进行全表扫描:explain extended select * from like1 where name like 'abc%';例如:+----+----- ...
- Laravel 多条件 where 查询语句
在使用 Laravel 开发应用的时候,还是会经常遇到多条件的查询语句,比如一个网站的商品筛选页面就有可能是这样子: http://jd.com/products?color=black&si ...
- 写一个“特殊”的查询构造器 - (四、条件查询:复杂条件)
复杂的条件 在 SQL 的条件查询中,不只有 where.or where 这些基本的子句,还有 where in.where exists.where between 等复杂一些的子句.而且即使是 ...
- 优化SQL Server数据库查询方法
本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...
- datatable筛选条件_DataTables 多条件查询、多列搜索
在使用DataTables展示数据,通常有两种 根据条件获取最终的数据显示 在已经显示的数据中过滤 第二种,DataTables 本身提供了过滤插件,默认条件下,在表格的右上角会有一个搜索框,可以对表 ...
- tkMapper之使用Weekend拼接条件进行条件查询
tkMapper之使用Weekend拼接条件进行条件查询 0. 引入 1. andEqualTo 2. andIn 3. andNotEqualTo 4. andNotIn 5. andGreater ...
最新文章
- Google和微软分别提出分布式深度学习训练新框架:GPipe PipeDream
- 【系列】EOS开发1 开发环境搭建
- IDEA 点击进入方法内部_【推荐收藏】IDEA的Debug调试,你全会用么?
- MOCTF-Web-Flag在哪?
- 随想录(rtos中的signal)
- 舍弃高通?谷歌推 Tensor 自研芯片
- 深入浅出 Java Concurrency - 目录 [转]
- Celery-一个会做异步任务,定时任务的芹菜
- Sicily 1049. Mondriaan 解题报告
- Python入门必备五本书籍,精华满满,直击重心
- sshd报错Privilege separation user sshd does not exist的解决办法
- NUC8 i5beh 黑苹果macOS Monterey 12.3.1安装教程
- 玩转docker之mysql容器(常见问题汇总-续更)
- python 高斯过程_1.7. 高斯过程
- 一个纯技术程序员的求职心酸历程
- HTTP协议与HTTPS协议详解(含常见面试题)
- 关于Sun公司的SCJP认证
- C++ QT中国象棋项目讲解(六) 人机对战N步搜索
- 编译电驴v1.1.15 with vs2010
- 在技术的海洋迷失了自己
热门文章
- linux pam limits.so,Linux 无法本地登录解决方法 报错/lib/security/pam_limits.so
- 安装Microsoft Visual Studio 2010 Service Pack 1 ,系统无法找到指定的对象
- Resend messages one by one
- 程序员VS产品经理的世纪之争
- 洛谷 P3939 数颜色
- phalcon蹩脚的面包屑(breadcrumbs)功能
- HTML多画面同时播放,视频两个画面同时播放,两个视频放在同一画面|视频左右或上下两个画面...
- 面试题 丑数(10)
- windows进程详解
- 2023-2029年中国博物馆旅游行业市场经营管理及发展前景规划报告