如何根据表标志过滤CGridView中的数据


how can i filter data in CGridView depending on table flag

我是yii的新手,无法根据DB表的活动标志字段过滤zii.widgets.grid.CGridView中的数据。我只想显示活动标志为0的数据。

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'member-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
    'id',
    'f_name',
    'l_name',
    'dob',
    'gender',
    'location',
    'email',
    'active',
    array(
        'class'=>'CButtonColumn',
    ),
),

));

在模型的search()方法中,您需要自定义CDbWriter。

您需要添加:

$criteria->compare('active', 1);

如果你想更高级,你可以创建一个命名作用域,并在search()方法中定义ActiveDataProvider时使用它,如下所示:

new CActiveDataProvider(Member::model()->active(),.....);

范围是:

public function active()
{
    return array(
            'condition'=>$this->getTableAlias(false, false).'.active =1',
    );
}