Yii - 将CGridView中的列更改为另一个模型的字段

时间:2014-07-23 14:40:06

标签: php yii yii-components

在我的模型中(让我们说模型A )我有一个对应于另一个模型的id的字段( Model B )。在由模型A项组成的CGridView中,我想显示该模型实例的另一个字段,而不是显示模型B的id。

这是我如何展示我的CGridView;

$dataProvider =  new CArrayDataProvider('Model A');
$dataProvider->setData($model_A_Data); // $model_A_data is an array of Model A Objects

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'data-id',
    'dataProvider'=>$dataProvider, //$objects->search(),
    'columns'=>array(
        array('header'=>'Model A Id', 'name'=>'id'),
        array('header'=>'Name', 'name'=>'name'),
        array('header'=>'Date', 'name'=>'date_created'),
        array('header'=>'Model B Id', 'name'=>'model_b_id'), // *HERE SHOW ANOTHER FIELD OF MODEL B*
    ),  
)); 

如何更改该列以显示模型B clas的另一个字段?

由于

2 个答案:

答案 0 :(得分:0)

Model A中说我有关系

array('modelbrelationname','ModelB','id'),

所以你可以拥有像这样的价值

$dataProvider =  new CArrayDataProvider('Model A');
$dataProvider->setData($model_A_Data); // $model_A_data is an array of Model A Objects

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'data-id',
    'dataProvider'=>$dataProvider, //$objects->search(),
    'columns'=>array(
        array('header'=>'Model A Id', 'name'=>'id'),
        array('header'=>'Name', 'name'=>'name'),
        array('header'=>'Date', 'name'=>'date_created'),
        array('header'=>'Model B Id', 'value'=>'modelbrelationname.id'), // *HERE SHOW ANOTHER FIELD OF MODEL B*
    ),  
)); 

答案 1 :(得分:0)

好的,我发现了$data var CGridView var中保存相应行数据后如何解决这个问题。

只需添加:

array('name'=>'Model B Another Field',
      'value'=> 'ModelB::model()->FindByPk($data->id)->another_field'
),