2012-07-09 90 views
1

我有两个表表A和表B中如何显示在显示gridview的YII两个表的结果

我有表A的PK,为Fk在表B.称为member_id

而表B的girdview显示,我想表明在表A中的“会员名”,表B中使用“member_id”

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'transaction-grid', 
'dataProvider'=>$model->search(), 
'filter'=>$model, 
'columns'=>array(
    'id', 
    'member_id', 
    'Location', 
    ... 
    array(
     'class'=>'CButtonColumn', 
     'template'=>'{view}', 
    ), 
), 
)); 

回答

4

你需要安装一个关系到该表,你可以使用参考该字段的关系如下:

$data->member->name; 

在您的交易模型,你将使类似:

public function relations() { 
     // NOTE: you may need to adjust the relation name and the related 
     // class name for the relations automatically generated below. 
     return array(
      'member' => array(self::BELONGS_TO, 'Member', 'member_id'),// foreign key 
     ); 
    } 

和网格你会做这样的:

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'transaction-grid', 
'dataProvider'=>$model->search(), 
'filter'=>$model, 
'columns'=>array(
    'id', 
     array(
      'header' => 'Member', 
      'name' => 'member_id', 
      'value' => '$data->member->name' 
     ), 

    'Location', 
    ... 
    array(
     'class'=>'CButtonColumn', 
     'template'=>'{view}', 
    ), 
), 
)); 
+0

嗨,我已经完成以上步骤,但是,我得到错误作为'为foreach()'提供的无效参数。文件和行号是'/var/www/Yii/yii-1.1.13.e9e4a0/framework/db/ar/CActiveFinder.php(784)' – ungalnanban 2013-10-08 09:54:42