此问题直接遵循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)并排序!?
答案 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',
),
通过这种方式,我可以按组名搜索和排序!
我希望这篇文章对某些人有用