在Yii2中获取原始sql

时间:2015-07-21 08:12:28

标签: yii2

我有查询:

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

当我尝试打印sql时:

$popular->createCommand()->rawSql

它给了我:

SELECT * FROM "themes" "t"

我可以通过“join”获得完整的原始查询:

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

2 个答案:

答案 0 :(得分:5)

已经回答here

您可var_dumpActiveQuery个实例生成SQL,如下所示:

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

但是,我建议使用内置的调试模型和面板。

P.S。对于您的特定查询 - with()不执行JOIN,而是执行其他查询并使用实际相关记录填充关系属性。要使用JOIN,您需要使用joinWith()明确指定它。

答案 1 :(得分: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();