2015-07-21 3 views
3

У меня есть запрос:Получение сырой SQL в Yii2

$popular = self::find() 
    ->from(self::tableName() . ' as t') 
    ->with('user'); 

Когда я пытаюсь напечатать SQL:

$popular->createCommand()->rawSql 

Это дает мне:

SELECT * FROM "themes" "t" 

Так я могу получить полный необработанный запрос с «соединением»:

SELECT * FROM "themes" "t" LEFT JOIN "users" u ON u.user_id = t.author_id 

ответ

2

Это уже ответил here.

Вы можете var_dump генерироваться SQL для ActiveQuery экземпляров, как это:

var_dump($query->prepare(Yii::$app->db->queryBuilder)->createCommand()->rawSql); 

Однако я рекомендую использовать встроенные отладки модели и панели.

P.S. Что касается вашего конкретного запроса - with() не выполняет JOIN, вместо этого он выполняет дополнительные запросы и заполняет атрибуты отношений фактическими связанными записями. Чтобы использовать JOIN, вам необходимо явно указать его, например, с помощью joinWith().

0

Надеется, что это поможет

$query = new Query; 

$query  ->select(['themes.c1 AS d1', 'themes.c2 As d2..']) 

        ->from('themes') 

        ->leftJoin('users', 'users.user_id = themes.author_id'); 

$command = $query->createCommand(); 

$data = $command->queryAll(); 
+0

Как это поможет? OP хочет получить SQL. – arogachev

Смежные вопросы