筛选gridview是否在条件中具有搜索功能条件?

时间:2014-04-14 08:33:57

标签: yii

我有这个代码的grideview

 $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'lecture-grid',
'dataProvider'=>$model->search(),
 'filter'=>$model,
'columns'=>array(
    array(
        'header'=>'name',
        'type' => 'raw',
       // 'name'=>'name',
        'value' => 'CHtml::link($data->name,Yii::app()->baseUrl . "/uploads/" . $data->name)',

    ),
    array(
        'header'=>'pages',

        'value'=>'$data->slide_num'
    ),
    array(
        'header'=>'type',

        'value'=>'$data->type'
    ),
    array(
        'header'=>'Size',

        'value'=>'$data->size'
    ),
   // 'subject.name'
    array (
        'header'=>'subject',
        'value' => 'ucfirst($data->subject->name)',
        'filter' => CHtml::dropDownList('Lecture[subject_id]',
                $model->subject_id, Chtml::ListData(Subject::model()->findAll('department_id='.$department_id),'id','name'),
                array('empty' => '(Select)'))

    )
/*    array(
        'name'=>'subject',
        'type'=>'raw',
        'value'=>"Subject::model()->find('id=2')->name",
        'filter'=>''
    ),*/


),
));

并且在模型中搜索功能是

public function search()
{
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria=new CDbCriteria;

    $criteria->compare('id',$this->id);
    $criteria->compare('name',$this->name,true);
    $criteria->compare('slide_num',$this->slide_num,true);
    $criteria->compare('type',$this->type,true);
    $criteria->compare('size',$this->size,true);
    $criteria->compare('user_id',$this->user_id);
    $criteria->compare('subject_id',$this->subject_id);

    return new CActiveDataProvider(get_class($this), array(
        'criteria' => $criteria,
    ));
    /*return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));*/
}

每件事都没问题我的目标是过滤器在这个搜索功能中正常工作但我希望在条件中有一个条件     $criteria->condition='subject_id=1 or subject_id=3';  当我把条件放在标准中时,它的过滤器不能解决搜索功能中的条件及其过滤器的工作原理

public function search()
{
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria=new CDbCriteria;

    $criteria->compare('id',$this->id);
    $criteria->compare('name',$this->name,true);
    $criteria->compare('slide_num',$this->slide_num,true);
    $criteria->compare('type',$this->type,true);
    $criteria->compare('size',$this->size,true);
    $criteria->compare('user_id',$this->user_id);
    $criteria->compare('subject_id',$this->subject_id);
    $criteria->condition='subject_id=1 or subject_id=3';
    return new CActiveDataProvider(get_class($this), array(
        'criteria' => $criteria,
    ));
    /*return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));*/
}

1 个答案:

答案 0 :(得分:0)

而不是$criteria->condition='subject_id=1 or subject_id=3';

尝试

$criteria->addCondition("subject_id = 1");
$criteria->addCondition("subject_id = 2", "OR");

或者只是

$criteria->addInCondition("subject_id", array("1","2"));