获取 YII2 AR 执行的 SQL 语句


Yii2开发很方便,无论开发什么样的应用程序。但是很多时候调试php与服务器的连接的时候会有各种各样的不方便,大多数时候调试web页面,打开debug就可以了,Yii2会给我们提供足够多的调试信息进行观察,或者使用xdebug都可以帮我们很快的定位问题所在。
有时在编写命令行程序的时候,只能通过echo或者var_dump之类打印出变量的值一一进行辨别,但是调试sql有时候,光靠变量的返回值不足以看出问题所在,此时需要观察AR生成的sql语句是否正确,可以像下面这样打印sql语句进行调试。

$query = User::find()
  ->where(['id'=>[1,2,3,4])
  ->select(['username'])

// get the AR raw sql in YII2
$commandQuery = clone $query;
echo $commandQuery->createCommand()->getRawSql();

$users = $query->all()

Archives