您好我是yii的新手,我目前正在开展一个项目,我遇到了CDbCriteria问题。
我的目标查询是:
title LIKE '$_GET['search']%' OR description LIKE '$_GET['search']%'
是否可以使用CDbCriteria比较获得相同的结果?
控制器操作:
public function actionClassifieds(){
$model = new Classifieds('search');
$model->unsetAttributes();
if(isset($_GET['category'])){
if( $_GET['category'] == 0 ){
$model->classified_category_id = '';
}else{
$model->classified_category_id = $_GET['category'];
}
}
if(isset($_GET['search'])){
$model->title = $_GET['search'];
$model->description = $_GET['search'];
}
$this->render('classifieds',array('model'=>$model));
}
我的模特:
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('classified_category_id',$this->classified_category_id);
$criteria->compare('title',$this->title,true);
$criteria->compare('description',$this->description,true);
$criteria->compare('price',$this->price,true);
$criteria->compare('timestamp',$this->timestamp);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>10,
),
));
}
答案 0 :(得分:9)
尝试:
$criteria->condition = "title LIKE :t OR description LIKE :d"; $criteria->params = array( ':t' => trim( Yii::app()->request->getParam('search') ).'%', ':d' => trim( Yii::app()->request->getParam('search') ).'%');
更好地使用Yii::app()->request->getParam($var_name)
<强>已更新强>
$criteria->compare('classified_category_id',$this->classified_category_id);
$criteria->compare('price',$this->price,true);
$criteria->compare('timestamp',$this->timestamp);
$criteria->addCondition("title LIKE :t OR description LIKE :d");
$criteria->params[':t'] = $this->title;
$criteria->params[':d'] = $this->description;