簡體   English   中英

Yii-在CGridView中更改其他模型字段的列

[英]Yii - Change column in CGridView for another model's field

在我的模型中(假設模型A ),我有一個與另一個模型( 模型B )的id對應的字段。 在由模型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 clasS的另一個字段?

謝謝

說在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*
    ),  
)); 

好的,我在CGridView發現了包含相應行數據的$data CGridView后,想出了解決方法。

只需添加以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM