2012-10-13 17 views
1

這個問題直接跟隨this other如何使用兩級1-N關係對CGridView列進行排序和搜索?

我有這個表:組,用戶報告

關係: 組1 - > N個用戶**和**用戶1 - > n個報表

我已經有這個關係報告模式:

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

其中t他在用戶模式

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

在報表模型我有這樣的:

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

管理員查看報告的我使用的是CGridView

我使用user.group.name來顯示組名,但是如何搜索(按DropDown)和排序!?

+1

爲此,檢查:http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/ –

+1

看到我的答案,我已經擴展了wiki解決方案,並添加了用於搜索的組合,並且擴展瞭解決方案以涵蓋兩級關係問題... – realtebo

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

以這種方式,我可以按組名稱搜索和排序!

我希望這篇文章可以是有用到someon

相關問題