首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

3分钟短文 | Laravel复杂SQL超多WHERE子句,本地作用域你没用过

今天说一说,复杂超多WHERE子句,怎么写起来较为优雅。 学习时间 比如对于业务逻辑中,User模型在筛选查询时候有非常多限制条件,类似下面这样: ?...然而对于laravel而言,这些全过程都可以拼装,你只需要关注筛选和操作,剩下组装sql过程,laravel都帮你做好了。...首先,你完全不必把每个条件都使用where链式调用,可以把查询条件放在一个 array 数组内,整体传入where子句。 ? 这样把拼装where子句工作,提前到查询数组操作上,就更加灵活了。...优雅SQL laravel号称最优雅PHP框架,不是浪得虚名,其设计编程方式,可有效令人产生编程愉悦感。...Laravel 软删除功能就是利用此特性数据库中获取 “未删除”模型。 你可以编写你自己全局作用域,很简单、方便为每个模型查询都加上约束条件。看官方给出示例: ?

2.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

通过 Laravel 查询构建器实现复杂查询语句

有时候,我们想要获取并不是一行或几行记录,而是某个字段值,你当然你可以查询到一行记录后结果对象中获取指定字段值,但是 Laravel 为我们提供了更便捷语法: $name = '学院君'; $...你一定有过这样经历,数据库获取指定查询结果后,以主键 ID 值为键,以某个字段值为值构建关联数组,以前,你可能不得不遍历查询结果构建数组才能解决这样问题,在 Laravel 中,我们只需在查询构建器上调用...查询 前面我们已经用到过通过 where 方法构建查询子句,这里我们将系统介绍 WHERE 查询子句各种构建。...这一查询构建方式叫做「参数分组」,在带括号复杂 WHERE 查询子句中都可以参考这种方式来构建查询语句。...where 条件子句,它将会返回被连接两个表笛卡尔积,返回结果行数等于两个表行数乘积,如果带 where,返回是匹配行数。

29.9K20

如何编写SQL查询

GROUP BY: 将具有指定列中公共值聚合(或分组)到一行中。GROUP BY 子句将具有公共值合到一行中,因此行数将与唯一值数量一样多。...FROM 子句: SQL> SELECT 1+2; 1+2 ______ 3 JOIN 关系模型完全是关于规范化数据,即把独立数据放入单独表中,并在这些表之间定义 关系。...WHEREWHERE 子句筛选由 FROM 子句生成行。到目前为止,您始终会得到表中所有行。如果您只想返回南美洲所有国家,这就需要 WHERE 子句。...GROUP BY GROUP BY 子句用于将多行聚合到一个中,本质上将多行合并为一行。...逻辑角度来看,它行为与 WHERE 子句相同,但它在不同处理阶段进行过滤: SQL> SELECT r.name, SUM(c.population) 2 FROM regions r

9410

Laravel5.1 框架数据库查询构建器用法实例详解

本文实例讲述了Laravel5.1 框架数据库查询构建器用法。分享给大家供大家参考,具体如下: 今儿个咱说说查询构建器。它比运行原生SQL要简单些,它操作面儿也是比较广泛。...'%base')- get(); // 类似 } 2.2 orWhere orWhere和where接收参数是一样,当where逻辑没有查找到 or查找到了 返回or结果,当where查找到了...('id', [1, 3])- get(); dd($articles); } ↑ 上述代码是查找id在1~3之间集合。...2.4 whereIn和whereNotIn whereIn是查找列值在给定数据中: public function getArticlesInfo() { $articles =...常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

3.6K41

Laravel拼装SQL子查询最佳实现

学习时间 对于数据库DBA可能更习惯SQL角度出发,SQL现有的语言结构和功能上解决问题。...大家注意那个 IN 子句,其实是一个查询结果集,另个表返回。 写SQL真的很伤神,不如用框架自带orm,操作起来非常人性化,拼装也很简单。那就抛出一个问题,Laravel如何实现上述子查询?...对Laravel来说,简直不要太简单,你只要在写whereIn时候,将数组使用闭包返回就可以了。...写在最后 本文通过一个SQL语句查询在Laravel实现方式,解释了laravel在拼装SQL查询时自由度,使用起来非常灵活。...对于固定查询方式,或者经过优化SQL语句,你大可直接发送给Laravel直接运行以便提高效率。

3.7K10

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

说明 在日常开发中,经常会需要写多条件数据库查询语句。在使用框架情况下,单纯使用原生sql查询会导致结果与model无法对应,也就没有办法使用框架一些便利方法对结果集进行处理。...尤其是laravel提供了非常多对查询结果集进行处理工具。所以最好是使用laravel提供ORM进行多条件数据库查询。...问题 比如需要执行这样一条sql语句 select * from homework where (id between 1 and 10 or id between 50 and...('complete', 1) - where(function ($query) { $query- where('title', 'like', 'a%') - orWhere('title...laravelwhere方法使用闭包可以有效构建嵌套where子句(在这里,使用where闭包相当于在构建sql时候加一个括号 以上这篇laravel多条件查询方法(and,or嵌套查询)就是小编分享给大家全部内容了

3.5K31

Laravel 实现Eloquent模型分组查询并返回每个分组数量 groupBy()

Laravel 5.5 Linux mint 18 PHPStorm 最近刚玩Laravel,手册源码还没来得及看完就跃跃欲试做了个小项目,其中有个需求是分组查询数据库中一个字段并返回每个分组中数量...having 方法用法和 where 方法类似: $users = DB::table('users') - groupBy('account_id') - having('account_id...'browser', DB::raw('count(*) as total')) - groupBy('browser') - get(); 再去查手册 ## 指定一个 Select 子句...这时可使用 select 方法自定义一个 select 子句来查询指定字段: $users = DB::table('users')- select('name', 'email as user_email...参考: Laravel Eloquent groupBy() AND also return count of each group 以上这篇Laravel 实现Eloquent模型分组查询并返回每个分组数量

4.2K51

MySQL:查询条件

查询条件 1、使用 WHERE 子句数据表中读取数据通用语法: SELECT field1, field2,...fieldN FROM table_name1, table_name2......[WHERE condition1 [AND [OR]] condition2..... 查询语句中你可以使用一个或者多个表,表之间使用逗号**,** 分割,并使用WHERE语句来设定查询条件。...如果我们想在 MySQL 数据表中读取指定数据,WHERE 子句是非常有用。 使用主键来作为 WHERE 子句条件查询是非常快速。...---- 2、使用 LIKE 子句数据表中读取数据通用语法: SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1...---- 3、MySQL UNION 操作符 MySQL UNION 操作符用于连接两个以上 SELECT 语句结果组合到一个结果集合中。多个 SELECT 语句会删除重复数据。

4K10

Laravel框架中路由和控制器操作实例分析

本文实例讲述了Laravel框架中路由和控制器操作。...分享给大家供大家参考,具体如下: 路由 简介: 将用户请求转发给相应程序进行处理 作用:建立url和程序之间映射 请求类型:get、post、put、patch、delete 目录:app/http...请求逻辑集合到一个类中 存放位置app/Http/Controllers 基础控制器:在laravel中,默认所有的控制器都继承了控制器基类 <?...('id', '[0-9]+'); 更多关于Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php...+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

2K21

laravel 框架结合关联查询 when()用法分析

本文实例讲述了laravel 框架结合关联查询 when()用法。...: $this; } return $this; } when会判断第一个参数真与假,如果是真,则执行第一个callback,如果是假, 则执行默认方法,我那段代码就只设置了真的时候需要执行代码...这样的话可以使代码易读性更好,当然也可以拆分子句, 但是when这个用法相对更赞。 ? 如上用法直接用关联表中字段作为搜索条件就更赞了!!!...更多关于Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及...《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

1.1K21

十条了解SQL语句优化方案

1丶选择最有效率表名顺序(只在基于规则优化器中有效): Oracle解析器按照从右到左顺序处理FROM子句表名,FROM子句中写在最后表(基础表 driving table)将被最先处理,...2丶WHERE子句连接顺序: Oracle采用自下而上顺序解析WHERE子句,根据这个原理,表之间连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录条件必须写在WHERE子句末尾...5丶整合简单,无关联数据库访问: 如果你有几个简单数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)。...10丶用Where子句替换HAVING子句: 避免使用HAVING子句,HAVING 只会在检索出所有记录之后才对结果集进行过滤。这个处理需要排序,总计等操作。...如果能通过WHERE子句限制记录数目,那就能减少这方面的开销。 END ?

75630

如何管理SQL数据库

注意:如果您未在UPDATE语句中包含WHERE子句,该命令将替换表中每行中保存数据。...在SQL中,星号充当占位符来表示“所有”: SELECT * FROM table; 使用WHERE子句 您可以通过附加带有WHERE子句SELECT语句来缩小查询结果范围,如下所示: SELECT...INNER JOIN将返回两个表中具有匹配值所有记录,但不会显示任何没有匹配值记录。 通过使用外部 JOIN子句,可以两个表中一个表中返回所有记录,包括在另一个表中没有相应匹配值。...外部JOIN子句写为LEFT JOIN或RIGHT JOIN。 一个LEFT JOIN条款“左”表,只有匹配记录“右”表返回所有记录。...; 此外,UNION子句可以将查询不同表两个(或更多)SELECT语句组合到同一个结果集中: SELECT column FROM table_1 UNION SELECT column FROM table

5.5K95

【21】进大厂必须掌握面试题-65个SQL面试

什么是SQL中连接? JOIN子句用于根据两个或多个表之间相关列来组合它们。它用于合并两个表或从中检索数据。...此递归函数或过程可帮助程序员多次使用同一代码。 Q40。什么是SQL中CLAUSE? SQL子句通过为查询提供条件来帮助限制结果集。子句有助于整个记录集中过滤行。...例如– WHERE,HAVING子句。 Q41。”拥有”条款和”何处”条款有什么区别? HAVING子句只能与SELECT语句一起使用。...通常在GROUP BY子句中使用它,并且每当不使用GROUP BY时,HAVING行为就像WHERE子句。...拥有子句仅与查询中GROUP BY函数一起使用,而WHERE子句在它们成为查询中GROUP BY函数一部分之前应用于每行。 Q42。列出执行动态SQL方式?

6.4K22

3分钟短文:Laravel模型OR查询避坑指南

引言 laravel模型提供了query builder对象用于组装查询条件并生成PSD查询语句,从而与数据库对话。...常规写法,比如只有一个约束条件查询: $usersOfType = DB::table('users')->where('type', $type)->get(); 根据传入$type,返回所有符合条件数据条目...效果是一样。 为了演示多种用法,laravelwhere查询子句,其实可以玩出花儿来,就多贴几种用法。...链式写法,还有同等写法,直接在where内传入约束条件数组: $newVips = DB::table('contacts')->where([['vip', 1],['created_at', '...写在最后 本文重点通过where和orWhere查询子句对比,为大家说明查询条件构造时一定要分清楚约束对象, 以及连锁条件。

1.4K20

SQL高手必知调优方法(一)

参数, 可以增加每次数据库访问检索数据量 ,建议值为200 3 选择最有效率表名顺序(只在基于规则优化器中有效) ORACLE 解析器按照从右到左顺序处理FROM子句表名,FROM子句中写在最后表...(基础表 driving table)将被最先处理,在FROM子句中包含多个表情况下,你必须选择记录条数最少表作为基础表。...4 WHERE子句连接顺序 ORACLE采用自下而上顺序解析WHERE子句,根据这个原理,表之间连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录条件必须写在WHERE子句末尾...5 SELECT子句中避免使用 ' * ' ORACLE在解析过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成, 这意味着将耗费更多时间。...7 整合简单,无关联数据库访问 如果您有几个简单数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系) 8 用TRUNCATE替代DELETE 当删除表中记录时,在通常情况下

55210

C#3.0新增功能07 查询表达式

(2)在第一个 from 子句与最后一个 select 或 group 子句之间,可以包含以下这些可选子句一个或多个:where、orderby、join、let,甚至是其他 from 子句。...查询变量显式和隐式类型化 本文档通常提供查询变量显式类型以便显示查询变量与 select 子句之间类型关系。...创建这些之后,附加子句会筛选出一些,然后按升序对进行排序。 若要执行这些附加操作,需要由 countryGroup 表示延续。...筛选、排序和联接 在开头 from 子句与结尾 select 或 group 子句之间,所有其他子句where、join、orderby、from、let)都是可选。...有关详细信息,请参阅 orderby 子句。 join 子句 使用 join 子句可基于每个元素中指定之间相等比较,将一个数据源中元素与另一个数据源中元素进行关联和/或合并。

2.1K10

SQL命令 SELECT(四)

SQL命令 SELECT(四) WHERE子句 WHERE子句限定或取消查询选择中特定行。 符合条件行是那些条件表达式为真的行。...如果希望使用聚合函数返回值指定选择条件,请使用HAVING子句WHERE子句可以使用=(内部连接)符号连接操作符指定两个表之间显式连接。...WHERE子句可以使用箭头语法(- >)操作符在基表和来自另一个表字段之间指定隐式连接。 GROUP BY子句 GROUP BY子句接受查询结果行,并根据一个或多个数据库列将它们分成单独。...HAVING 子句 HAVING子句类似于对进行操作WHERE子句。 它通常与GROUP BY子句或%AFTERHAVING关键字一起使用。 HAVING子句限定或取消查询选择中特定行。...GROUP BY子句还将输出显示限制为每个指定Home_State遇到第一个记录。

1.4K30
领券