1

この質問は、この他の質問に直接続きます

このテーブルがあります: グループ、ユーザー、レポート

関係: グループ 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で)・並び替えの方法は!?

4

1 に答える 1

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',
 ),

このようにして、グループ名で検索して並べ替えることができます!

この投稿が誰かの役に立つことを願っています

于 2012-10-13T13:24:13.123 に答える