嗨,我是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,
),
));
}
尝试:
$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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句