yii2.0获取到最后一条执行的sql怎么看

 我来答
1234nimei
2018-02-11 · 超过60用户采纳过TA的回答
知道小有建树答主
回答量:149
采纳率:77%
帮助的人:66万
展开全部

这个有很多种方法

1. yii有提供一个 getRawSql方法  比如说一个查询

$query = User::find();
$query->select(['username','age'])->where(['id'=>1)->one();

echo $query->createCommand()->getRawSql();//输出sql语句

2.可开启yii2的debug模块,这个功能很强大,在里面可以查到当前页面所有的sql信息,具体配置方法自行百度,网上太多这个配置了

3.查找Yii源码   随便找个模型调用原生的方法 比如 User::updateAll 方法,通过编辑器定位到updateAll方法的源码 你会发现下面一段代码

public static function updateAll($attributes, $condition = '', $params = [])
{
   $command = static::getDb()->createCommand();
   $command->update(static::tableName(), $attributes, $condition, $params);

   return $command->execute();
}

继续定位execute方法

public function execute()
{
   $sql = $this->getSql();
   $rawSql = $this->getRawSql();

   Yii::info($rawSql, __METHOD__);
   if ($sql == '') {
      return 0;
   }

   $this->prepare(false);
        $token = $rawSql;
        try {
            Yii::beginProfile($token, __METHOD__);

            $this->pdoStatement->execute();
            $n = $this->pdoStatement->rowCount();

            Yii::endProfile($token, __METHOD__);

            $this->refreshTableSchema();

            return $n;
        } catch (\Exception $e) {
            Yii::endProfile($token, __METHOD__);
            throw $this->db->getSchema()->convertException($e, $rawSql);
        }
    }

方法里 $rawSql就是最原生要执行的sql拉,在这里打断点输出就ok

个人推荐第二种方法,最方法最高效,具体配置方法自己百度,很简单!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式