当需要创建较复杂的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多条件查询相关推荐

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

    比如需要执行这样一条sql语句 select * from proofing_notice where (id between 1 and 10 or id between 50 and 70) an ...

  2. Laravel 使用数组条件查询时 in和or 的用法

    laravel给出了whereIn的用法: $users = DB::table('users')->whereIn('id', [1, 2, 3])->get(); 或者在闭包中使用wh ...

  3. php8预加载,如何利用预加载优化Laravel Model查询详解

    前言 本文主要给大家介绍了关于利用预加载优化Laravel Model查询的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 介绍 对象关系映射(ORM)使数据库的工作变得非常简单 ...

  4. php ci model条件查询,Laravel关系模型指定条件查询方法

    对于关系模型来说,有时候我们需要甄别关联后结果,例如,班级和学生是一对多关联,我现在查询班级,但是想只显示正常状态,即状态为1的学生,因为有的学生从这个班级里面删除了,状态是4,那么我们在查询的时候就 ...

  5. mysql in和or扫描全表_MySQL对OR条件查询不支持优化,会进行全表扫描

    MySQL对OR条件查询不支持优化,会进行全表扫描:explain extended select * from like1 where name like 'abc%';例如:+----+----- ...

  6. Laravel 多条件 where 查询语句

    在使用 Laravel 开发应用的时候,还是会经常遇到多条件的查询语句,比如一个网站的商品筛选页面就有可能是这样子: http://jd.com/products?color=black&si ...

  7. 写一个“特殊”的查询构造器 - (四、条件查询:复杂条件)

    复杂的条件 在 SQL 的条件查询中,不只有 where.or where 这些基本的子句,还有 where in.where exists.where between 等复杂一些的子句.而且即使是 ...

  8. 优化SQL Server数据库查询方法

    本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...

  9. datatable筛选条件_DataTables 多条件查询、多列搜索

    在使用DataTables展示数据,通常有两种 根据条件获取最终的数据显示 在已经显示的数据中过滤 第二种,DataTables 本身提供了过滤插件,默认条件下,在表格的右上角会有一个搜索框,可以对表 ...

  10. tkMapper之使用Weekend拼接条件进行条件查询

    tkMapper之使用Weekend拼接条件进行条件查询 0. 引入 1. andEqualTo 2. andIn 3. andNotEqualTo 4. andNotIn 5. andGreater ...

最新文章

  1. Google和微软分别提出分布式深度学习训练新框架:GPipe PipeDream
  2. 【系列】EOS开发1 开发环境搭建
  3. IDEA 点击进入方法内部_【推荐收藏】IDEA的Debug调试,你全会用么?
  4. MOCTF-Web-Flag在哪?
  5. 随想录(rtos中的signal)
  6. 舍弃高通?谷歌推 Tensor 自研芯片
  7. 深入浅出 Java Concurrency - 目录 [转]
  8. Celery-一个会做异步任务,定时任务的芹菜
  9. Sicily 1049. Mondriaan 解题报告
  10. Python入门必备五本书籍,精华满满,直击重心
  11. sshd报错Privilege separation user sshd does not exist的解决办法
  12. NUC8 i5beh 黑苹果macOS Monterey 12.3.1安装教程
  13. 玩转docker之mysql容器(常见问题汇总-续更)
  14. python 高斯过程_1.7. 高斯过程
  15. 一个纯技术程序员的求职心酸历程
  16. HTTP协议与HTTPS协议详解(含常见面试题)
  17. 关于Sun公司的SCJP认证
  18. C++ QT中国象棋项目讲解(六) 人机对战N步搜索
  19. 编译电驴v1.1.15 with vs2010
  20. 在技术的海洋迷失了自己

热门文章

  1. linux pam limits.so,Linux 无法本地登录解决方法 报错/lib/security/pam_limits.so
  2. 安装Microsoft Visual Studio 2010 Service Pack 1 ,系统无法找到指定的对象
  3. Resend messages one by one
  4. 程序员VS产品经理的世纪之争
  5. 洛谷 P3939 数颜色
  6. phalcon蹩脚的面包屑(breadcrumbs)功能
  7. HTML多画面同时播放,视频两个画面同时播放,两个视频放在同一画面|视频左右或上下两个画面...
  8. 面试题 丑数(10)
  9. windows进程详解
  10. 2023-2029年中国博物馆旅游行业市场经营管理及发展前景规划报告