我有这样的查询:
$q = \DB::table(\DB::raw('('.
\DB::table('table1')
->where('field1', 1)->toSQL()
.') AS rs'));
dd($q->get()); // return []
尽管我必须使用这种方法,但当我删除where
子句时,它会正确返回所有记录,但在使用where()
时没有任何记录。
我确定field1 = 1
时有记录。如果我使用$q->toSQL()
,最终的SQL是:
select * from (select * from table1 where field1 = ?) AS rs
当我将此sql粘贴到phpmyadmin时,它返回1条记录。因此,“查询”构建器似乎会导致此问题。
答案 0 :(得分:0)
自己找到它!我应该使用:
$q1 = Table1Model()::select()->where('field1', 1);
$q2 = \DB::table(\DB::raw('('.
$q1->toSQL()
.') AS rs'))
->mergeBindings($q1->getQuery());