聊一聊laravel query builder 使用子查询

本文探讨在Laravel项目中处理复杂SQL子查询的方法,详细介绍了使用`toSql()`、`getQuery()`和`raw()`组合,以及查询构造器内置闭包如`whereRaw`来创建子查询的实践案例。强调了统一使用特定方法以提高代码一致性的重要性。
摘要由CSDN通过智能技术生成

概述:

项目当中经常用到复杂SQL带有子查询,而Laravel的查询构造器并没有直接提供转化成子查询的方法,或者说尽管提供了方法,可是给出来的例子却不太具体,对刚上手的新手来说非常不友好,本文章主要是聊一聊Laravel如何构造各种带有子查询的SQL。

准备:

首先,Laravel一般实现子查询的两种方式:

1、toSql()+getQuery()+raw()方法:

  1. toSql()方法的作用是为了获取不带有binding 参数的SQL,也就是说带问号的SQL
select * from `rooms` where `rooms`.`project_id` = ?
  1. getQuery()方法的作用是为了获取binding参数并代替toSql()获得SQL的问号,从而得到完整的SQL
select * from `rooms` where `rooms`.`project_id` = 3
  1. raw()的作用是直接把SQL套进Laravel的查询构造器中
  `$sql = 'select * from `rooms` where `rooms`.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值