如何在具有两级1-N关系的CGridView列中进行排序和搜索?

时间:2012-10-13 12:59:26

标签: yii yii-relations

此问题直接遵循this other

我有这些表:组,用户,报告

关系: 第1组 - > N个用户**和**用户1 - > N报告

我已经有了这种关系在报告模型中:

'user' => array(self::BELONGS_TO, 'Users', 'userId'),

这在用户模型中

'group' => array(self::BELONGS_TO, 'Gruppi', 'groupId'),

在报告模型中,我有这个:

$criteria=new CDbCriteria;
$criteria->with = array ('user');

在报告的管理视图中,我正在使用 CGridView

我使用user.group.name显示组名,但如何搜索(通过DropDown)并排序!?

1 个答案:

答案 0 :(得分:1)

在管理员视图中,而不是user.group.name,我正在使用

array (
        'name' => 'groupId',
        'value' => '$data->user->group->name',
        'filter' => Chtml::listData( Groups::model()->findAll() ,'id','name')
    ),

在报告模型中,我添加了一个类字段

public $groupId;

在报告规则

    array('groupId','safe','on'=>'search'),

在报告搜索中

....
$criteria->with = array ('user.group');
....
$criteria->compare('user.groupId',$this->groupId);
....
[in sort array]
'groupId'=>array(
            'asc' =>'group.name',
                'desc'=>'group.name DESC',
 ),

通过这种方式,我可以按组名搜索和排序!

我希望这篇文章对某些人有用