Yii 如何在具有两级1-N关系的CGridView列中进行排序和搜索?
这个问题紧接着 我有以下表格:组、用户、报告 关系: 组1->N个用户**和**用户1->N个报告 我在报表模型中已经存在此关系:Yii 如何在具有两级1-N关系的CGridView列中进行排序和搜索?,yii,yii-relations,Yii,Yii Relations,这个问题紧接着 我有以下表格:组、用户、报告 关系: 组1->N个用户**和**用户1->N个报告 我在报表模型中已经存在此关系: 'user' => array(self::BELONGS_TO, 'Users', 'userId'), 这是在用户模型中实现的 'group' => array(self::BELONGS_TO, 'Gruppi', 'groupId'), 在报告模型中,我有以下内容: $criteria=new CDbCriteria; $criteria-&
'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来显示组名,但是如何搜索(通过下拉菜单)和排序 在admin视图中,我使用的是user.group.name,而不是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',
),
这样我就可以按组名进行搜索和排序了
我希望这篇文章能对管理员视图中的某个人有用,而不是我使用的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',
),
这样我就可以按组名进行搜索和排序了
我希望这篇文章能对某些人有用。为此,请检查:查看我的答案,我已经扩展了wiki解决方案,添加了用于搜索的组合,并扩展了解决方案以涵盖两级关系问题……好的,很好,接受您自己的答案也可以。谢谢,我在等待确认我的答案是有效的和“良好的代码实践”。(我必须等到第二天,我会做的)为此,检查:查看我的答案,我已经扩展了wiki解决方案,添加了搜索组合,并扩展了解决方案,以涵盖两级关系问题…好的,很好,可以接受您自己的答案。谢谢,我在等待确认我的答案是有效的和“良好的代码实践”。(我必须再等一天,我会做到的)