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

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

有时候,我们想要获取的并不是一行或几行记录,而是某个字段的值,你当然你可以查询到一行记录后从结果对象中获取指定字段的值,但是 Laravel 为我们提供了更便捷的语法: $name = '学院君'; $...前面我们已经用到过通过 where 方法构建查询子句,这里我们将系统介绍 WHERE 查询子句的各种构建。...基本查询 基本查询 最基本的 WHERE 查询子句就是通过 where 方法进行简单查询了: DB::table('posts')->where('views', 0)->get(); # 此处等号可以省略...like查询 有时候我们可能会对字段进行模糊查询,尤其是字符串匹配的时候: DB::table('posts')->where('title', 'like', 'Laravel学院%')->get()...'users') ->where('options->language', 'en') ->get(); 如果属性字段是个数组,还支持通过 whereJsonContains 方法对数组进行包含查询

30.2K20

推荐超好用的 6 款 Laravel Admin 管理模版

但是,脚手架只能在开始一个项目时才有用,如果您在初始设计中犯了错误,后续则很难进行更改和调整。脚手架软件包的一个例子可以参考 InfyOm Laravel Generator。...Laravel Nova Laravel 官方提供的 Admin 管理模板是 Nova,它主要是由 Laravel 的作者 Taylor Otwell 创建的。...这些功能开箱即用,也可以在前端和后端进行自定义(Nova 使用 Vue.js 作为前端组件)。...通常大多数 Laravel 模型在 Nova 中工作无需任何额外的配置,但您可以定义具体的细节,如字段如何被编辑等。 此外,Nova 另一个值得关注的特点是允许您在一个或多个模型上执行自定义任务。...此外,您还可以通过布局和组件来自定义屏幕的查询和权限以及视图层。 虽然这比使用 Nova 需要更多的手动操作,但它非常灵活,易于迭代和定制。

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

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

    引言 今天说一个细分的需求,在模型中,或者使用laravel提供的 Eloquent ORM 功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写? 本文通过几个例子,为大家梳理一下。...to 在laravel中你可以使用 whereBetween 这个查询子句。...首先构造起始和结束日期: $from = date('2020-01-01'); $to = date('2020-08-09'); 然后调用查询子句: Reservation::whereBetween...当然了,上面的方法是在SQL中直接进行筛选,如果查询结果限制的条目本身比较少,也能充分利用索引,所以不担心查询的速度,那么我们可以在查询完成后,在返回的 Eloquent Collection 集合上,...链式调用过滤 filter 方法进行筛选。

    3.3K10

    3分钟短文 | Laravel 自定义 SQL 查询参数绑定

    引言 laravel使用模型进行数据库操作时,并不是所有的字段或者关联关系 都能满足查询需求,有时候会有一些MySQL的函数计算等功能放在数据库 层面执行。 本文说一说自定义的参数绑定办法。...首先是使用select方法指定了返回字段名, 对于自定义的字段 distance 使用 having 子句进行进一步条件限定。...如果大家经常使用laravel的调试功能的话,应该会注意到,这种问号的写法是laravel本身封装SQL语句用的。...而对于写惯了PDO原生SQL语句查询的,则可以使用PDO方式的绑定方式: $property = Property::select(DB::raw("title, lat, lng, ( 3959 *...; 写在最后 本文通过三种方式实现了laravel模型进行复杂的自定义查询, 其中提供了两种参数绑定的方式,我们推荐使用 selectRaw 的方式, 更为直观。

    2.1K40

    优化查询性能(四)

    优化查询性能(四) 注释选项 可以在SELECT、INSERT、UPDATE、DELETE或TRUNCATE表命令中为查询优化器指定一个或多个注释选项。...可以通过两种方式指定并行查询处理: 在系统范围内,通过设置auto parallel选项。 在每个查询的FROM子句中指定%PARALLEL关键字。 并行查询处理应用于SELECT查询。...这可以显著提高使用一个或多个COUNT、SUM、AVG、MAX或MIN聚合函数和/或groupby子句的查询的性能,以及许多其他类型的查询。 这些通常是处理大量数据并返回小结果集的查询。...但是,同时指定单个字段和一个或多个聚合函数的“多行”查询不会执行并行处理,除非它包含GROUP BY子句。...如果查询不包含聚合函数,%PARALLEL和%NOTOPOPT的组合将执行查询的并行处理。 包含左外连接或内连接(其中ON子句不是相等条件)的查询。

    2.7K30

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

    Laravel 框架中的 DB 和 ORM 是两个不同的组件,关于 ORM 的概念,我们也将在相关的学习中了解到,但是现在我们先从简单的普通查询学起。...从 options 这个参数里面,我们可以看出,Laravel 默认使用的是 PDO 连接的数据库,我也没有研究在 Laravel 中如何使用 mysqli 进行连接,因为 PDO 确实已经是事实的连库标准了...这样,线上、测试和本地环境,就不会互相冲突,也不需要我们在各个环境中进行各种 hosts 修改。 原生查询 接下来,我们就学习怎么使用原生 SQL 语句进行数据库操作。..., ['Sam', 1]); dd(\Illuminate\Support\Facades\DB::connection('laravel8')->select("select * from raw_test...而且我们会发现,Laravel 只能使用 PDO ,无法使用 MySQLi 来进行数据库操作。

    3.2K50

    SqlAlchemy 2.0 中文文档(二十一)

    对于对特定列进行精细控制的计数,跳过子查询的使用或以其他方式控制 FROM 子句,或使用其他聚合函数,可以结合使用expression.func表达式和 Session.query(),例如: from...method intersect(*q: Query) → Self 对此查询与一个或多个查询进行 INTERSECT。 与Query.union()的工作方式相同。参见该方法的使用示例。...method intersect_all(*q: Query) → Self 对此查询与一个或多个查询进行 INTERSECT ALL。 与Query.union()的工作方式相同。...要对特定列进行精细控制以进行计数,跳过子查询的使用或以其他方式控制 FROM 子句,或者使用其他聚合函数,请结合 Session.query() 中的 expression.func 表达式,例如: from...method intersect(*q: Query) → Self 对此查询与一个或多个查询进行 INTERSECT 操作。 与 Query.union() 的工作方式相同。

    57410

    SqlAlchemy 2.0 中文文档(二十)

    /api.html ORM 加载选项 加载选项是一种对象,当传递给Select.options()方法的Select对象或类似的 SQL 构造时,会影响列和关系属性的加载。...通常用于将对象链接到子查询,并且应该是一个别名选择构造,就像从 Query.subquery() 方法或 Select.subquery() 或 Select.alias() 方法的 select()...对于那些是 SELECT 语句且不是属性或关系加载的查询,会向查询添加自定义的with_loader_criteria()选项。...通常用于将对象链接到子查询,并且应该是一个别名选择结构,就像从Query.subquery()方法或Select.subquery()或Select.alias()方法生成的那样select()结构。...对于那些是 SELECT 语句且不是属性或关系加载的查询,将为查询添加自定义的with_loader_criteria()选项。

    32710

    MySQL-Select语句高级应用

    注意:   WHERE中出现的字符串和日期字面量必须使用引号括起来   这里,字符串字面量写成大写或小写结果都一样,即不区分大小写进行查询。   ...1.4 LIMIT子句 特点说明: MySQL特有的子句。 它是SELECT语句中的最后一个子句(在order by后面)。 它用来表示从结果集中选取最前面或最后面的几行。...注意:一旦给表定义了别名,那么原始的表名就不能在出现在该语句的其它子句中了 1.5.2 NATURAL  JOIN子句   自动到两张表中查找所有同名同类型的列拿来做连接列,进行相等连接 SELECT...]      ⛳ UNION用于把两个或者多个select查询的结果集合并成一个      ⛳ 进行合并的两个查询,其SELECT列表必须在数量和对应列的数据类型上保持一致      ⛳ 默认会去掉两个查询结果集中的重复行...1.5.7 子查询 子查询定义   在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select)

    3.9K00

    MySQL DQL 数据查询

    一个 SELECT 可以在不引用任何表的情况下进行计算,也就是没有其他任何字句,只有 SELECT 子句。...2.SELECT 子句 SELECT 子句用于指定要选择的列或使用表达式生成新的值。 对于所选数据,还可以添加一些修饰,比如使用 DISTINCT 关键字用于去重。...; 7.ORDER BY 子句 ORDER BY 子句用于根据指定的列对结果集进行排序。...这是因为 MySQL 在某些情况下会对行数进行估算,而不是实时计算。如果需要准确的行数,建议使用 COUNT(*) 函数或查询 information_schema.TABLES 视图。...通过查看警告信息,可以了解到语句执行过程中可能存在的问题或异常情况,如截断数据、丢失数据等。根据警告信息,可以进行相应的调整和处理,以确保查询的正确性和性能。

    25120

    【mysql系列】细谈“explain”之理论Part

    语法: EXPLAIN SELECT select_options; select_options是select语句的查询选项,包括from where子句等等。...,包含一组数字,表示查询中执行select子句或操作表的顺序 1.id相同,执行顺序从上往下 2.id不同,id值越大,优先级越高,越先执行 select_type: 查询类型,主要用于区别普通查询,联合查询...或where列表中包含了子查询 4.derived——在from列表中包含的子查询被标记为derived(衍生),MySQL会递归执行这些子查询,把结果放到临时表中 5.union——如果第二个select...出现在UNION之后,则被标记为UNION,如果union包含在from子句的子查询中,外层select被标记为derived,故在union中第二个及之后的select。...7、select tables optimized away:在没有group by子句的情况下,基于索引优化Min、max操作或者对于MyISAM存储引擎优化count(*),不必等到执行阶段再进行计算

    53640

    【Laravel系列4.6】

    PDO 属性设置 来填坑了,在【Laravel系列4.2:查询构造器】https://mp.weixin.qq.com/s/vUImsLTpEtELgdCTWI6k2A中,我们说过一个问题,那就是查询构造器查询出来的结果都是...在配置连接信息的时候,我们可以在 options 中设置一些 PDO 的默认属性。...找到 laravel/framework/src/Illuminate/Database/Connection.php 中的 select() 方法,也就是 原生语句 执行的地方。...之前我们已经说过,查询构造器 最终调用的结果还是使用的 原生查询 的这几个方法,所以我们从这个 select() 方法入手。...事件,就是要有一个注册,然后在另外一个地方监听,当注册的对象内容发生变化的时候,可以通过监听这边的方法来对事件内容进行处理。关于 Laravel 事件的内容,我们将在后面的文章中进行详细的学习。

    1.4K30

    SqlAlchemy 2.0 中文文档(七十六)

    问题在于,如果内部查询没有指定所有列,那么我们无法在外部添加 WHERE 子句(实际上会尝试,并生成错误的查询)。这个决定显然可以追溯到 0.6.5 版本,注释中写着“可能需要对此进行更多调整”。...当我们有一个引用某列名或命名标签的 select() 或 Query 时,我们可能想要对已知列或标签进行 GROUP BY 和/或 ORDER BY: stmt = ( select([user.c.name...当我们有一个select()或Query引用某个列名或命名标签时,我们可能想要对已知列或标签进行 GROUP BY 和/或 ORDER BY: stmt = ( select([user.c.name...当我们有一个select()或Query引用某个列名或命名标签时,我们可能希望按已知列或标签进行分组和/或排序: stmt = ( select([user.c.name, func.count...当我们有一个select()或Query引用某个列名或命名标签时,我们可能希望按已知列或标签进行分组和/或排序: stmt = ( select([user.c.name, func.count

    10510

    SqlAlchemy 2.0 中文文档(十九)

    ## 使用加载器选项进行关系加载 另一种,可能更常见的配置加载策略的方式是在针对特定属性的每个查询上设置它们,使用Select.options()方法。...此处描述的技术仍然适用于使用 SQL 条件或修饰符查询相关集合,而不仅仅是简单的 WHERE 子句。...子查询加载 - 可通过lazy='subquery'或subqueryload()选项使用,这种加载方式会发出第二个 SELECT 语句,该语句重新陈述原始查询嵌入到子查询中,然后将该子查询与相关表进行...如果相关的集合要使用比简单的 WHERE 子句更复杂的 SQL 条件或修饰符进行查询,这里描述的技术仍然适用。...如果要使用比简单的 WHERE 子句更复杂的 SQL 条件或修改器查询相关集合,则这里描述的技术仍然适用。

    28010

    SqlAlchemy 2.0 中文文档(三)

    使用关系进行连接 显式 FROM 子句和 JOINs 和设置 ON 子句章节介绍了使用Select.join()和Select.join_from()方法来组合 SQL JOIN 子句。...() 或 Select.join_from() 用于推断 ON 子句。...使用关系进行连接 显式的 FROM 子句和 JOINs 和 设置 ON 子句 章节介绍了使用 Select.join() 和 Select.join_from() 方法来组合 SQL JOIN 子句。...另请参阅 ORM 查询指南中的关系 WHERE 运算符 ### 使用关系进行连接 在 ORM 查询指南 明确的 FROM 子句和 JOIN 和设置 ON 子句部分介绍了使用Select.join()和Select.join_from...它使用的 SELECT 形式在大多数情况下可以只针对相关表发出,而不需要引入 JOIN 或子查询,并且仅查询那些尚未加载集合的父对象。

    41520

    【mysql系列】细谈explain执行计划之“谜”

    语法: EXPLAIN SELECT select_options; select_options是select语句的查询选项,包括from where子句等等。...执行计划中各个列代表具体含义解释如下: id: 查询的序号,包含一组数字,表示查询中执行select子句或操作表的顺序 1.id相同,执行顺序从上往下 2.id不同,id值越大,优先级越高,越先执行 select_type...5.union——如果第二个select出现在UNION之后,则被标记为UNION,如果union包含在from子句的子查询中,外层select被标记为derived,故在union中第二个及之后的select...7、select tables optimized away:在没有group by子句的情况下,基于索引优化Min、max操作或者对于MyISAM存储引擎优化count(*),不必等到执行阶段再进行计算...union、union result union:若第二个select出现在union之后,则被标记为union;若union包含在from子句的子查询中,外层select将被标记为derived;故在

    91710

    Laravel 5.3之 Query Builder 源码解析(中)

    ()执行的,之前的Laravel版本是没有封装在闭包里而是先执行了连接操作,Laravel5.3是封装在了闭包里等着执行SQL语句再连接操作,应该是为了提高效率。...在看下这两步骤之前,先看下后置处理器对查询的结果集做了什么后置操作: // \Illuminate\Database\Query\Processors\Processor public...flatten($this->bindings); } 从上面源码能猜出个大概逻辑:toSql()方法大概就是把API编译成SQL语句,同时并把getBindings()中的真正的值取出来与SQL语句进行值绑定...,select()大概就是执行准备好的SQL语句。...这个过程就像是先准备好sql语句,然后就是常见的PDO->prepare( OK, toSql和select()源码在下篇再聊吧。

    3.3K31

    SqlAlchemy 2.0 中文文档(七十二)

    在另一个 SELECT 的 FROM 子句中包含 SELECT 而不先创建别名或子查询的行为将创建一个无名子查询。虽然标准 SQL 确实支持这种语法,但实际上大多数数据库都会拒绝它。...SELECT 的 FROM 子句添加额外条目,然后返回新的Select对象以进行进一步修改,而不是将对象包装在未命名的子查询中并从该子查询返回 JOIN,这种行为对用户来说一直是几乎无用和完全误导的。...将一个 SELECT 包含在另一个 SELECT 的 FROM 子句中,而不先创建别名或子查询的行为会导致创建一个未命名的子查询。虽然标准 SQL 支持此语法,但实际上大多数数据库都会拒绝它。...在另一个 SELECT 的 FROM 子句中包含一个 SELECT 的行为,而不先创建别名或子查询,会导致创建一个无名称的子查询。虽然标准 SQL 支持这种语法,但实际上大多数数据库都会拒绝。...子句添加额外条目,然后返回新的Select对象以进行进一步修改,而不是将对象包装在一个无名子查询中,并从该子查询返回 JOIN,这种行为对用户来说一直是几乎无用和完全误导的。

    87610
    领券