Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii 如何在具有两级1-N关系的CGridView列中进行排序和搜索?_Yii_Yii Relations - Fatal编程技术网

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

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-&

这个问题紧接着

我有以下表格:组、用户、报告

关系: 组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来显示组名,但是如何搜索(通过下拉菜单)和排序

在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解决方案,添加了搜索组合,并扩展了解决方案,以涵盖两级关系问题…好的,很好,可以接受您自己的答案。谢谢,我在等待确认我的答案是有效的和“良好的代码实践”。(我必须再等一天,我会做到的)