在yii中需要帮助才能在CGridView中显示两个表数据?

时间:2014-05-23 07:14:58

标签: php yii

在yii中需要帮助才能在CGridView中显示两个表数据 -

表信息 -

Id
branch_name

用户

Id
branch_id
user_name

关系 -

BranchMaster

public function relations()
  {
    return array(
    'users' => array(self::HAS_MANY, 'User', 'branch_id'),  
    );
   }

UserMaster

public function relations()
  {
    return array(
    'branchs' => array(self::HAS_MANY, 'Branch', 'Id'), 
    );
   }

view.php

$this->widget('zii.widgets.grid.CGridView', 
   array(
      'id'=>'my-grid',
      'dataProvider'=>$dataProvider,
      'filter'=>$model,
      'columns'=>array(
        'Id',
    'branch_name', 
    array('name'=>'users.user_name', 'value'=>$data->User>user_name),
        ),
));

_view.php

<b><?php echo CHtml::encode($data->getAttributeLabel('Id')); ?>:</b>
<?php echo CHtml::encode($data->Id); ?>
<br />

<b><?php echo CHtml::encode($data->getAttributeLabel('branch_name')); ?>:</b>
<?php echo CHtml::encode($data->branch_name); ?>
<br />

<b><?php echo CHtml::encode($data->getAttributeLabel('user_name')); ?>:</b>
<?php echo CHtml::encode($data->user_name); ?>
<br />

我的记录很好,但user_name总是显示空白值。 帮我解决我的问题...

2 个答案:

答案 0 :(得分:2)

只需更改关系HAS_ONE而不是HAS_MANY

'users' => array(self::HAS_ONE, 'User', 'branch_id'),

现在工作正常!!

答案 1 :(得分:1)

您没有获得该值,因为$ data部分是错误的 -

$this->widget('zii.widgets.grid.CGridView', 
   array(
  'id'=>'my-grid',
  'dataProvider'=>$dataProvider,
  'filter'=>$model,
  'columns'=>array(
    'Id',
    'branch_name', 
    array(
        'name'=>'users.user_name',
        'value'=>'$data->users->user_name'),     //here you used $data->User and need ' ' too
    ),
));