Laravel - 使用查询生成器命名子查询
Laravel - named subquery using Query Builder
在MySQL subqueries文档中有一个子查询的例子:
SELECT ... FROM (subquery) [AS] name ...
这是我要转换的原始查询:
select SUBQUERY_NAME.* from (select id, name from items) AS SUBQUERY_NAME
有没有什么方法可以在 Laravel 查询生成器中执行此操作而不使用 DB::raw()
?
不幸的是没有。查询生成器有其局限性,更复杂的查询不在其范围之内,这就是 DB::raw()
存在的原因。但是,如果你想让它更优雅一点并使用查询生成器生成子查询,你可以这样做:
$subquery = DB::table('items')->select('id', 'name')->toSql();
DB::table(DB::raw($subquery . ' as subquery_name'))->select('subquery_name.*');
在MySQL subqueries文档中有一个子查询的例子:
SELECT ... FROM (subquery) [AS] name ...
这是我要转换的原始查询:
select SUBQUERY_NAME.* from (select id, name from items) AS SUBQUERY_NAME
有没有什么方法可以在 Laravel 查询生成器中执行此操作而不使用 DB::raw()
?
不幸的是没有。查询生成器有其局限性,更复杂的查询不在其范围之内,这就是 DB::raw()
存在的原因。但是,如果你想让它更优雅一点并使用查询生成器生成子查询,你可以这样做:
$subquery = DB::table('items')->select('id', 'name')->toSql();
DB::table(DB::raw($subquery . ' as subquery_name'))->select('subquery_name.*');