【问题标题】:How to view CActiveDataProvider mysql query如何查看 CActiveDataProvider mysql 查询
【发布时间】:2014-01-14 10:47:21
【问题描述】:

搜索时如何在 CActiveDataProvider 中获取运行时查询作为输出。

期待像这样的输出
select * from user_tbl where username='xxx' and email='test@in.com';

我怎么能 在我的模型中

public function search() {  

        $criteria=new CDbCriteria;  
        $criteria->compare('username',$this->username,true);
        $criteria->compare('email',$this->email,true);           
        $criteria->compare('country',$this->country,true);          
        $criteria->compare('role',$this->role,true); 
        $criteria->compare('status',$this->status,true); 
        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,'pagination' => array(
            'pageSize' => 100,
        ),
        ));
    } 

【问题讨论】:

    标签: activerecord yii


    【解决方案1】:

    您需要在配置文件中激活记录器。请参考this description

    【讨论】:

      【解决方案2】:
      • 第一种方式(官方方式):
        在您的main.php 配置文件中将这两个参数添加到您的log section 中,您可以在页面末尾或浏览器中的FireBug Console 中看到日志消息。不要忘记在db 部分设置必要的参数。

      'components' => array( 'db'=>array( 'enableProfiling'=>true, 'enableParamLogging' => true, ), 'log'=>array( 'class'=>'CLogRouter', 'routes'=>array( array( 'class'=>'CWebLogRoute', 'showInFireBug' => true, ), array( 'class'=>'CProfileLogRoute', 'levels'=>'profile', 'enabled'=>true, ), ), ), );

      • 第二种方式:
        在您的代码中,只需将其中一列的拼写更改为不正确的内容,您就会收到一条错误消息,其中包含页面中的完整 SQL 查询。像这样:
        (我已将 country 更改为 wrong_country,当您刷新页面时,您将看到在您的数据库中执行的生成的 SQL)

      $criteria->compare('wrong_country',$this->country,true);

      在这两种方式中,index.php 中的 YII_DEBUG 为 true

      defined('YII_DEBUG') or define('YII_DEBUG',true);
      

      【讨论】:

        【解决方案3】:

        如您所见,搜索函数返回一个 CActiveDataProvider。 您可以从“条件”属性中获取 SQL 的“位置”部分:

        $prov=$myMod->search();
        $cond=$prov->criteria->condition;
        $tabName=$myMod->tableName();
        $sql="select * from $tabName where $cond";
        

        【讨论】:

        • 问题是关于如何在数据库中执行之前从CActiveDataProvider 获取生成的查询,但您的答案不是解决问题,只是获取条件的条件部分。
        猜你喜欢
        • 2010-10-08
        • 2011-11-10
        • 2013-02-22
        • 2013-06-28
        • 2013-11-19
        • 1970-01-01
        • 2016-02-11
        • 1970-01-01
        • 2021-07-10
        相关资源
        最近更新 更多