2015-11-10 1 views
0

У меня есть запрос, как это:Laravel конструктор запросов не работает с тем, где положение в подзапроса

$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

Нашел это сам! Я должен использовать:

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

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