Laravel 查询生成器不适用于子查询中的 where 子句

Laravel query builder doesn't work with where clause in subquery

我有这样的查询:

$q = \DB::table(\DB::raw('('.
    \DB::table('table1')
         ->where('field1', 1)->toSQL()
.') AS rs'));

dd($q->get()); // return []

尽管我必须使用这种方法,但当我删除 where 子句时,它 returns 所有记录都正确,但在使用 where().

时没有任何记录

我确定field1 = 1时有记录。如果我使用 $q->toSQL() 最后的 SQL 是:

select * from (select * from table1 where field1 = ?) AS rs

当我将这个 sql 粘贴到 phpmyadmin 时,它 returns 1 条记录。所以似乎是查询生成器导致了这个问题。

自己找的!我应该使用:

$q1 = Table1Model()::select()->where('field1', 1);

$q2 = \DB::table(\DB::raw('('.
    $q1->toSQL()
.') AS rs'))
->mergeBindings($q1->getQuery());