访问间接相关模型的价值

时间:2014-04-21 09:30:45

标签: php yii

我在公司模型的view.php页面上的CDetailView下面显示一个CGridView。我在使用公司详细信息在CGridView中显示值时遇到问题。公司模型有一系列CompanyAddresses,用作CGridView的CArrayDataProvider。

      $config = array();
      $dataProvider = new CArrayDataProvider($rawData=$model->companyAddresses,$config);
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider
    , 'columns'=>array(
                    //'id',
                    array('header'=>'SN.',
                    //'value'=>'++$row',  // may nt work with pagination but the below does work
                    'value'=>'$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + ($row+1)',
                    ),
                     'address',
                        array(
                            'name'=>'Tehsil',
                            //'value'=> Utility::getTehsilName(Tehsil::model()->findByPk('tehsil_id')),
                            'value'=> Utility::getTehsilName($this->loadModel('tehsil_id')),
                            //'value'=> Tehsil::model()->findByAttributes( array('id' => 'tehsil_id' ) )->name,
                            ),
                        array(
                            'name'=>'address_tag_id',  
                                      'value'=>AddressTag::model()->findByPk('address_tag_id'),
                            ),

                    )

        ));  

我无法从Tehsil表中获取Tehsil_Name,该表的ID在CompanyAddress表中。

2 个答案:

答案 0 :(得分:1)

您的使用值属性错误,请检查:

'value'=>function($data){
     return Utility::getTehsilName($data->tehsil_id);
 },

答案 1 :(得分:0)

value是一个php表达式,它被评估为生成gridview单元格的内容,如下所示

'value' => 'Utility::getTehsilName($this->grid->controller->loadModel($data->tehsil_id))'

如果您使用relation chaining来解决这个问题,那么您的表达式将被简化为:

'value' => '$data->model1->tehsil->name'

其中model1是中间关系。