如何将CActiveDataProvider中的运行时查询作为搜索的输出。
期望输出,如
从user_tbl选择*用户名=‘xxx’和电子邮件=‘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,
),
));
} 发布于 2014-01-15 08:08:03
如您所见,搜索函数返回一个CActiveDataProvider。您可以从“条件”属性中获得SQL的"where“部分:
$prov=$myMod->search();
$cond=$prov->criteria->condition;
$tabName=$myMod->tableName();
$sql="select * from $tabName where $cond";发布于 2014-01-14 10:55:14
您需要激活配置文件中的记录器。请参阅这一描述
发布于 2016-01-24 08:12:16
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, ), ), ), );
country更改为wrong_country__,当您刷新页面时,您将看到在数据库中执行的生成的SQL )
$criteria->compare('wrong_country',$this->country,true);
在这两种情况下,让YII_DEBUG在index.php中是真的
defined('YII_DEBUG') or define('YII_DEBUG',true);https://stackoverflow.com/questions/21111601
复制相似问题