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

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言 今天说一个细分的需求,在模型中,或者使用laravel提供的 Eloquent ORM 功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写? 本文通过几个例子,为大家梳理一下。...然后调用模型的 where 查询语句: $reservations = Reservation::where('reservation_from', $now)->get(); 上一条生成的SQL语句如下...如何实现在 from 和 to 之间的日期呢,类似下面这样: SELECT * FROM table_name WHERE reservation_from BETWEEN '$from' AND '$...to 在laravel中你可以使用 whereBetween 这个查询子句。...如果考虑初始查询条件圈定的记录条目过多,会对MySQL造成流量的压力,那么在SQL阶段直接筛选出最精准的记录,无疑是个好习惯。whereBetween 在模型里链式调用毫无压力: ?

3.3K10

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

查询 前面我们已经用到过通过 where 方法构建查询子句,这里我们将系统介绍 WHERE 查询子句的各种构建。...JSON查询 从 MySQL 5.7 开始,数据库字段原生支持 JSON 类型,对于 JSON 字段的查询,和普通 where 查询并无区别,只是支持对指定 JSON 属性的查询: DB::table(...这一查询构建方式叫做「参数分组」,在带括号的复杂 WHERE 查询子句中都可以参考这种方式来构建查询语句。...,普通的 WHERE 查询也可以使用子查询,对应的方法是 whereSub,但是子查询的效率不如连接查询高,所以我们下面来探讨连接查询在查询构建器中的使用。...5 offset 10; 底层最终执行的 SQL 语句完全一样,所以,随便你选择哪种方式都是可以的。

30.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    2.8K10

    Laravel拼装SQL子查询的最佳实现

    比如查询一个product表,要求查询条件中,product_catagory 表的某些字段存在才能才回。 写多了容易无解,直接上SQL: ?...大家注意那个 IN 子句,其实是一个查询结果集,从另个表返回的。 写SQL真的很伤神,不如用框架自带的orm,操作起来非常人性化,拼装也很简单。那就抛出一个问题,Laravel如何实现上述的子查询?...代码像这么写: Products::whereIn('id', function($query){ $query->select('paper_type_id') ->from(with...写在最后 本文通过一个SQL语句查询在Laravel中的实现方式,解释了laravel在拼装SQL查询时的自由度,使用起来非常灵活。...对于固定的查询方式,或者经过优化的SQL语句,你大可直接发送给Laravel直接运行以便提高效率。

    3.8K10

    MySQL 中最容易踩的 8 个坑 !

    三、错误理解 NULL 值与索引 以为给字段加上索引,查询包含 NULL 值的数据就会高效,实则不然。普通索引在处理 NULL 值时,行为与非 NULL 值有别。...在 B-Tree 索引里,NULL 值是单独存储分支的,对 IS NULL 或 IS NOT NULL 查询条件,无法像常规值索引那样高效定位。...像字段定义为 VARCHAR,查询条件写成 WHERE int_column = '123'(int_column 本是整型字段),MySQL 会把字段值转为字符串再比较,这个过程导致索引无法正常使用,...七、忽略 JOIN 关联查询的优化 多表 JOIN 操作频繁出现在复杂业务查询里,随意编写 JOIN 条件、关联表顺序不对,会让查询性能大打折扣。...如左连接时,右表过滤条件写在 ON 子句与 WHERE 子句效果不同,放在 WHERE 会把左表应保留的部分行过滤掉,导致结果错误且性能损耗;关联表顺序不当,没让数据量小、筛选性强的表先关联,会使中间结果集膨胀

    14110

    在 Laravel 应用中构建 GraphQL API

    graphql.org GraphQL 可以提升 API 调用的灵活性,我们可以像写数据库查询语句一样来请求 API 来获取所需要的数据,这对构建复杂的 API 查询来说非常有用。...GraphQL 还提供了可视化界面来帮助我们编写查询语句,还提供了自动补全的功能,这让编写查询更加简单。...创建模型 像下面这样创建模型和表 user_profiles, products, product_images,别忘了还要创建模型间的关系。 ? 4....创建查询和定义 GraphQL 的类型 GraphQL 中的查询与 Restful API 中的末端路径查询是一样的,查询只是用于获取数据,以及创建、更新、删除操作。...Testing 我们可以使用 GraphiQL 来十分简单地编写查询语句,因为在编写的时候它可以自动补全,或者我们也可以使用 postman 来请求 API,下面是自动补全的示例: ?

    3.4K20

    【Laravel系列4.2】查询构造器

    其实就像我们上篇文章中学习过的使用原始 SQL 语句的方式来操作数据库一样,查询构造器这个东西就是在这个原始操作的基础上为我们封装了一系列的接口,能够让我们方便地来操作数据库。...或者说,就是像我们很早前自己封装的那种 MySQL 类一样,框架帮我们完成了这一步。并且,最主要的是,它可以让我们以链式调用的形式来操作数据库,从而避免去写繁杂混乱的 SQL 语句。...在 Laravel 中,默认情况下这个值设置的就是 PDO::FETCH_OBJ 。关于如何修改成 PDO::FETCH_ASSOC ,我们会在后面的文章中学习。...我们又发现了一个设计模式在 Laravel 框架中的应用,意外不意外,惊喜不惊喜! 连表查询 普通的连表查询的使用还是非常简单的,我也就不多说了,下面的代码中也有演示。...`sex` }); 代码中第一段的连表查询就是最普通的一个外键的查询,如果要实现多个外键连表的话,就需要使用第二种方法。

    16.8K10

    MYSQL用法(九) 索引用法

    创建方式:和普通索引创建方式一样,将“INDEX”替换成“UNIQUE”就可以了 ③主键索引   主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。...可以考虑使用索引的主要有两种类型的列: 在WHERE子句中出现的列  在join子句中出现的列 例子:   SELECT people.age, ##不使用索引   town.name...Extra: 这里可能出现许多不同的选项,其中大多数将对查询产生负面影响。在本例中,MySQL只是提醒我们它将用WHERE子句限制搜索结果集。...等类型的字段建立索引  需要的时候建立联合索引,但是要注意查询SQL语句的编写谨慎建立 unique 类型的索引(唯一索引)  一般建议每条记录最好有一个能快速定位的独一无二定位的唯一标示(索引...、OR、IN等语句的使用,避免使用联表查询和子查询,因为将使执行效率大大下降能够使用索引的字段尽量进行有效的合理排列,如果使用了联合索引,请注意提取字段的前后顺序  如果where子句的查询条件里有不等号

    3.1K20

    SQL 的执行顺序

    了解 SQL 的执行顺序非常有价值,它可以让我们写出语法正确的 SQL,帮助我们简化编写新查询的过程。 本文将在 MySQL 的基础上,介绍查询语句的执行顺序。...这些优化可能会改变实际的执行顺序,但它们最终必须返回与以默认的执行顺序运行查询的结果相同。 按照执行顺序的规则,排在后面的子句产生的结果不能被前面的子句引用。...比如: 不能在 WHERE 子句里面使用 SELECT 子句设置的别名,因为 WHERE 子句先于 SELECT 子句执行; # 执行失败,提示“Unknown column 'ename_job' in...实际上并没有,MYSQL 会对这条 SQL 做重写,像这样: SELECT CONCAT(job, '|', deptno), COUNT(*) FROM emp GROUP BY CONCAT...MySQL 可能会对 emp 表先执行WHERE 子句的过滤操作,过滤后的结果集再和 dept 表关联。

    2.3K31

    mysql前缀索引使用,Mysql:前缀索引与索引

    大家好,又见面了,我是你们的朋友全栈君。 可以像普通索引一样使用mysql前缀索引吗?...如果有一些TEXT列,则前缀索引的长度为例如1,查询是: SELECT * FROM table WHERE textcol =’ab’ 它会给我所有以’a’开头的行还是会检查整列值?...一般来说,我很想知道使用前缀索引时是否有任何警告.不考虑性能,如果任何查询必须以不同方式编写,或者客户端是否必须执行额外逻辑,则更多....解决方法: 如果你想一下,MySQL仍会给你正确的答案,即使没有索引…它只是不会那么快……所以,是的,你仍然会得到一个正确的答案前缀索引....性能会降低,因为在将“可能”行与索引匹配后,服务器将转到行数据并进一步根据WHERE子句过滤结果.两个步骤而不是一个,但应用程序无需关心.

    5.3K20

    MySQL 查询专题

    SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。 在WHERE子句中使用圆括号 任何时候使用具有 AND 和 OR 操作符的WHERE子句,都应该使用圆括号明确地分组操作符。...子查询 版本要求 MySQL 4.1 引入了对子查询的支持,所以要想使用本章描述的 SQL,必须使用MySQL 4.1 或更高级的版本。...用子查询建立(和测试)查询的最可靠的方法是逐渐进行,这与 MySQL 处理它们的方法非常相同。首先,建立和测试最内层的查询。然后,用硬编码数据建立和测试外层查询,并且仅在确认它正常后才嵌入子查询。...很少见, 看上去像对象 多行多列 select * from 表1 别名1 , (select ... ) 别名2 where 条件 所谓的连接是有针对性的找出关联关系 全文搜索 用基于文本的搜索作为正则表达式匹配列值的更进一步的介绍...使用正则表达式,可以编写查找所需行的非常复杂的匹配模式。虽然这些搜索机制非常有用,但存在几个重要的限制。

    5K30

    MySQL DQL 数据查询

    1.SELECT 语句 MySQL 的 SELECT 语句用于从数据库表中检索数据。功能强大,语句结构复杂多样。不过基本的语句格式像下面这个样子。...需要注意的是,不同的数据库管理系统可能会有一些差异,但一般情况下,上述顺序适用于大多数SQL查询。 MySQL 和标准 SQL 执行顺序基本是一样的。..._20170514 GROUP BY uin HAVING cnt>10; 6.HAVING 子句 HAVING 和 WHERE 子句一样,用于指定选择条件。...如果像对符合条件的记录进行 COUNT DISTINCT,那么如何添加条件呢? 参见 MySQL distinct count if conditions unique,可以使用下面的方法。...通过使用 EXPLAIN 命令,可以了解 MySQL 是如何执行查询的,包括使用的索引、连接类型、扫描的行数等。

    24920

    MySQL问题集锦

    (2)一个SELECT语句中,子句的顺序是固定的。例如GROUP BY子句不会位于WHERE子句的前面。...MySQL和SQL执行顺序基本是一样的。 2.where子句为什么不能使用count的别名 先举一个反例。...也就容易理解where和having子句的使用区别了。 3.MySQL将查询的结果保存到新的中间物理表中,并建立索引,提高查询速度 将子查询的结果保存到新建的uinTable表中。...当当前连接数据库的会话结束时,临时表会被自动删除,不会永久保存。这里需要注意的是,MySQL中没有像SQL Server中临时表又分为本地临时表和全局临时表,MySQL中只有本地临时表。...image.png 6.如何查看当前数据库中建立了哪些临时表 使用命令show tables 是不会显示当前会话创建的临时表有哪些。那么我们如何才能查看我们创建了的哪些临时表呢?

    1.2K20

    让SQL起飞(优化)

    因此如果想优化查询性能,我们必须知道如何写出更快的SQL,才能使优化器的执行效率更高。...(同样的IN也可以使用索引,这不是重要原因) 如果使用EXISTS,那么只要查到一行数据满足条件就会终止查询,不用像使用IN时一样扫描全表。在这一点上NOT EXISTS也一样。...1.5 WHERE条件不要写在HAVING字句 例如,这里继续用SalesHistory表举例,下面两条SQL语句返回的结果是一样的: --聚合后使用HAVING子句过滤 SELECT sale_date...原因有两个: 使用GROUP BY子句聚合时会进行排序,如果事先通过WHERE子句筛选出一部分行,就能够减轻排序的负担。 在WHERE子句的条件里可以使用索引。...3.1 使用HAVING子句 对聚合结果指定筛选条件时,使用HAVING子句是基本原则。不习惯使用HAVING子句的人可能会倾向于像下面这样先生成一张中间表,然后在WHERE子句中指定筛选条件。

    1.5K42

    MySQL -通过调整索引提升查询效率

    正确的顺序依赖于使用该索引的查询,并且同时需要考虑如何更好地满足排序和分组的需要(顺便说明,本节内容适用于B-Tree索引;哈希或者其他类型的索引并不会像B-Tree索引一样按顺序存储数据)。...所以,索引可以按照升序或者降序进行扫描,以满足精确符合列顺序的ORDER BY、GROUP BY和DISTINCT等子句的查询需求。 所以多列索引的顺序至关重要。...在这种情况下,这样设计的索引确实能够最快地过滤出需要的行,对于WHERE子句中只使用了索引部分前缀列的查询来说选择性也更高。...然而,性能不只是依赖于所有索引列的选择性(整体基数),也和查询条件的具体值有关,也就是和值的分布有关。这和选择前缀的长度需要考虑的地方一样。...问题描述: 执行一个很普通的查询:SELECT * FROM `article` WHERE article_category=11 ORDER BY article_id DESC LIMIT 5 。

    4.6K20

    MySQL-索引;视图「建议收藏」

    创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。...因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 (2)建立索引会占用磁盘空间的索引文件。 1、普通索引 创建索引 这是最基本的索引,它没有任何限制。...DROP INDEX [indexName] ON mytable; 2、唯一索引 它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。...每一次使用这个sql语句的时候都需要重新编写(导致SQL语句冗余重复),此时可以把这条复杂的SQL语句以视图对象的形式新建 在需要编写这条SQL语句的位置直接使用视图对象,可以大大简化开发。...并且利于后期的维护,修改的时候也只需要修改一个位置就行,只需要 修改视图对象所映射的SQL语句。 我们以后面向视图开发的时候,使用视图的时候可以像使用table一样。可以对视图进行增删改查等操作。

    1.4K20

    MySQL 简单查询语句执行过程分析(一)词法分析 & 语法分析

    简单查询语句执行过程分析,是 MySQL 执行过程分析系列文章的基础,会对查询语句执行过程中各个阶段进行比较详细的分析。...,对于像 MySQL 这样单机要尽可能支持更高并发的服务端程序来说,这是不能忍受的,所以不如用最简单的逻辑,最少的代码来实现自己的词法分析程序。...select子句中,字段可能有 2 种类型,一种是星号(*),一种是普通字段,星号会用 Item_asterisk 类实例化,而 Item_asterisk 类是 Item_field 类的子类。...这里要特别说明的一点是数据库名,我们一般在写 select 语句的时候,from 子句中的表名前面是不会带上数据库名的,就像本文示例 SQL 中的一样。...大于号(>)属于双目运算符,涉及 2 个操作数和 1 个比较运算符,所以 where 条件中,会创建 3 个实例: 左操作数:i1 字段,是一个普通的字段,创建一个 Item_feild 类的实例,此实例同样没有关联真正的

    1.5K20

    【MySQL】MySQL数据库的进阶使用

    insert语句一样,sql语句的返回结果就是1 row affected; MySQL有一个函数叫做row _count(),用于统计最近一次的sql操作所影响的行数。...where子句是select在查询时常用的一个筛选条件,当where条件判断为真时,select在会将查询结果显示出来,下面我们通过多个使用案例,来熟悉where条件的使用以及逻辑运算符的使用。...truncate属于DDL语句,执行时并不会经过事务,三大类SQL语句,只有DML才会经过事务(InnoDB),与delete不同的是,truncate只能对整表的数据进行操作,不能像 DELETE 一样针对部分数据操作...像上面我们所学到的所有查询,比如带where子句,order by子句,group by子句,having子句,分页显示limit的查询都是单表查询,而我们一般查询的数据可能不止来自一个表,很有可能来自多个表...通过嵌入到其他sql语句中的select语句的返回结果,子查询又可以细分为单行子查询,多行子查询,多列子查询,子查询除了可以用在where子句充当筛选条件外,还可以用在from子句充当临时表,作笛卡尔积

    35120

    MySQL数据库基础查询语句笔记

    普通查询 最基本的查询语句是由 CELECT 和 FROM 关键字组成的 *:代表所有字段的意思 SELECT 语句屏蔽了物理层的操作,用户不比关心数据的真是存储,交由数据库高效的查询数据 通常情况下...关键字来实现 DISTINCT修饰的不是列名,而是SELECT,即可以连起来看作一个整体SELECT DISTINCT,跟普通的SELECT相比,表明这种查询会执行去重。...重复,指的是结果集中的两行每一列的值都完全一样。如果存在任何一列值不一样,都不算重复。因此,重复不是只看一个列,而是要看一行的所有列。...#想查询10部门里边底薪超过2000的员工 四类运算符 WHERE语句中的条件运算会用到一下四种运算符: 算数运算符 MySQL ifnull()函数 - MySQL教程™ (yiibai.com...$代表字符串的结尾, 条件查询 II 逻辑运算符 二进制运算符 二进制运算的实质是将参与运算的两个操作数,按对应的二进制诸位进行逻辑运算 按位运算符 WHERE子句的注意事项 WHERE子句中,条件执行的顺序是从左到右

    3.2K50

    【Laravel系列4.1】连接数据库与原生查询

    连接数据库与原生查询 在 PHP 的学习中,数据库,也就是 MySQL 就像它的亲兄弟一样,永远没法分家。同理,在框架中,数据库相关的功能也是所有框架必备的内容。...Laravel 框架中的 DB 和 ORM 是两个不同的组件,关于 ORM 的概念,我们也将在相关的学习中了解到,但是现在我们先从简单的普通查询学起。...从 options 这个参数里面,我们可以看出,Laravel 默认使用的是 PDO 连接的数据库,我也没有研究在 Laravel 中如何使用 mysqli 进行连接,因为 PDO 确实已经是事实的连库标准了...这种操作其实就像是 Laravel 为我们封装好了 PDO 的调用,也就是像我们在很早前自己封装的那种数据库调用类一样,非常简单方便。...总结 数据库上手就是一堆源码,不过这也让我们搞清楚了 Laravel 在底层是如何去创建一个 PDO 对象的。

    3.2K50
    领券