Попробуйте:
public function search()
{
$criteria=new CDbCriteria(array('order'=>'upload_date ASC'));
if(isset($_GET['ModelName']['upload_date']))
{
$criteria->compare('upload_date',$this->upload_date,true);
// $criteria->addCondition('upload_date = :upload_date');
// $criteria->params[':upload_date'] = $this->upload_date;
}
else
{
$date=date('Y-m-d');
$criteria->condition = "upload_date='$date' ";
}
$criteria->compare('book_id',$this->book_id);
$criteria->compare('date_received',$this->date_received,true);
$criteria->compare('batch',$this->batch,true);
$criteria->compare('isbn_no',$this->isbn_no,true);
$criteria->compare('book_title',$this->book_title,true);
$criteria->compare('auther_name',$this->auther_name,true);
$criteria->compare('upload_date',$this->upload_date,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>50
),
));
}
Вам не нужно addCondition, особенно потому, что вы добавляете условие в тот же столбец.
Редактировать :В своем основном начальном условии вы уже установили upload_date = $date
, теперь, если вы добавите к нему условие, скажем, $_GET['ModelName']['upload_date']
, предоставленное пользователем в фильтре, ваш фактический запрос БД станет примерно таким: select * from tbl_name where upload_date = 'xxx' and upload_date = 'yyy'
, здесь xxx = $ dateВы дали, и yyy = дата, предоставленная пользователем.Теперь, если xxx! = Yyy, как запрос вернет какое-либо значение?Это невозможно.
Надеюсь, вы получили это объяснение.