如何在cgridview(yii框架)中显示两个模型?

时间:2013-06-06 12:46:17

标签: yii cgridview

我是yii框架的新手。我有2个模型(Tables有很多PeriodeDatas)并希望在表{s}视图中显示PeriodeDatas中的模型CGridView中的数据,但无法使其生效。

表格

The followings are the available columns in table 'nkr_tables':
@property integer $id
@property string $title
@property string $periode

表格模型关系

'periodeData' => array(self::HAS_MANY, 'PeriodeDatas', 'table_id')

PeriodeDatas

The followings are the available columns in table 'nkr_periode_datas':
@property integer $id
@property integer $table_id
@property string $year

PeriodeDatas 模型关系

'table' => array(self::BELONGS_TO, 'Tables', 'table_id')

表格控制器

public function actionIndex()
{
    $model = new Tables('search');
    $model->unsetAttributes();

    if (isset($_GET['Tables']))
        $model->attributes = $_GET['Tables'];

    $this->render('index', array('model' => $model));
}

表格视图

$this->widget('zii.widgets.grid.CGridView', 
array(
    'id'=>'tables-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns' => array(
        array(
            'name' => 'title',
            'header' => 'Data Title'
            ),
        'periode',
        array(
            'name' => 'periodeData.year',
            'header' => 'Tahun'
            )
        ),
    'selectionChanged'=>'function(id) { location.href = "'.$this->createUrl('tables/view').'/"+$.fn.yiiGridView.getSelection(id);}'
    )
);

结果: http://prntscr.com/18jpp1

如何在表格视图的year中显示模型PeriodeDatas中的CGridView

* 抱歉英语不好


更新
我尝试添加'value' => '$data->periodeData->year',但收到错误Trying to get property of non-object

更新
我尝试'value' => '$data->periodeData[0]->year'并正确显示年份,但如果表格中只有1条记录。如果表中有多条记录,则会产生错误Undefined offset: 0

然后我尝试'value' => '$data->periodeData[$data->id]->year'并给我错误Undefined index: 1

1 个答案:

答案 0 :(得分:0)

而不是创建periodedatas的模型,并在视图中使用 table 的关系来访问记录

因为你正在访问数组()而不是字符串,因为它是HAS_MANY Relation

你可以阅读这个帖子Search by a HAS_MANY relation