使用 Laravel db builder 在查询中执行 WITH MySQL 表达式
Posted
技术标签:
【中文标题】使用 Laravel db builder 在查询中执行 WITH MySQL 表达式【英文标题】:Execute WITH MySQL expression in a query using Laravel db builder 【发布时间】:2021-06-29 10:04:55 【问题描述】:找不到任何有关如何执行类似操作的信息
WITH table AS (
SELECT colA, colB
FROM table2 INNER JOIN table1 ON table1.id = table2.colA
),
table4 AS (
SELECT moo, foo
INNER JOIN table3 ON table3.colC = table4.colD
),
......
使用 Laravel 数据库查询构建器和表达式 WITH
有没有人构建过这样的查询并知道如何执行?
【问题讨论】:
【参考方案1】:完全可以,我经常用。
例如,我有一个 $query
和一个名为 $params
的数组(准备好的语句)。
比我做的:
$connection = DB::connection('mysql');
$connection->getPdo()->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$result = $connection->select($query, $params);
我需要PDO::ATTR_EMULATE_PREPARES
,因为我重复了params
(例如,在查询中多次:user_id
)。
所以基本上,我使用原始查询。也可以在 eloquent 模型上使用这样的查询,在这种情况下,它将返回您在 Laravel 中习惯的模型。但是这个例子确实展示了基本版本。
【讨论】:
以上是关于使用 Laravel db builder 在查询中执行 WITH MySQL 表达式的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 4.2 中创建自定义 DB Query Builder 方法
如何在 Laravel Query Builder 中执行 TRIM() 和 CONCAT()?
Laravel Query Builder Group未获得所有记录