2016-01-06 15:52:32 6753次浏览 3条评论 1 4 0

在一些情况需要把ORM转换为SQL字符串以便调试。

一般人可能会推荐使用Debug模块,但是这样子太繁琐了。

我们可以采用以下方法来解决这个问题。

$query = User::find()->andWhere(['age' => 19])->andWhere(['like', 'name', 'test']);
echo $query->createCommand()->getRawSql();

自己动手尝试下吧。

觉得很赞
  • 评论于 2016-01-06 16:24 举报

    哎哟,不错哦!

  • 评论于 2016-01-11 10:12 举报

    赞!学习了!

  • 评论于 2021-08-20 09:33 举报
    $query = User::find()->andWhere(['age' => 19])->andWhere(['like', 'name', 'test']);
    //echo $query->createCommand()->getRawSql();
    $query->createCommand()->queryAll(PDO::FETCH_COLUMN | PDO::FETCH_GROUP)
    

    https://github.com/letwang/HookPHP/blob/master/vendor/Hook/Db/PdoConnect.php#L59
    https://secure.php.net/manual/en/function.PDOStatement-setFetchMode.php

    /**
         * 返回所有行的数组数据
         * @param string $statement
         * @param array $parameter
         * @param int $type 数据结构:
         * <div><ol>
         * <li>PDO::FETCH_COLUMN
         *  <p>返回第1列,[VALUE构成的索引数组]</p>
         * </li>
         * <li>PDO::FETCH_KEY_PAIR 或使用 PDO::FETCH_COLUMN | PDO::FETCH_UNIQUE
         *  <p>返回前2列,[第一列为KEY => 第二列为VALUE]</p>
         * </li>
         * <li>PDO::FETCH_COLUMN | PDO::FETCH_GROUP
         *  <p>返回前2列,[第一列为KEY => [第二列为VALUE,如果KEY重复,VALUE对应归类]]</p>
         * </li>
         * <li>PDO::FETCH_UNIQUE
         *  <p>返回所有列,[第一列为KEY => [其余列为关联数组]]</p>
         * </li>
         * <li>PDO::FETCH_GROUP
         *  <p>返回所有列,[第一列为KEY => [[其余列为关联数组,如果KEY重复,VALUE对应归类]]]</p>
         * </li>
         * <li>PDO::FETCH_OBJ
         *  <p>返回所有列,对象形式</p>
         * </li>
         * </ol></div>
         * @return array
         */
    
您需要登录后才可以评论。登录 | 立即注册