如何在CDetailView Yii中显示不同列名的外键数据

时间:2014-02-02 14:32:51

标签: php yii cdetailview

如何在 CDetailView Yii

中显示来自外键的数据,如果列名不同

表1

x1      x2
1       sample text 1
2       sample text 2
3       sample text 3

表2

y1      y2          y3 (foreign key x1)
1       text 1      1
2       text 2      1
3       text 3      2

我想显示以下结果

y1      y2          y3
1       text 1      sample text 1
2       text 2      sample text 1
3       text 3      sample text 2

这是模型类中的关系代码

public function relations(){
    return array(
         'Table2' => array(self::BELONGS_TO, 'Table1', array('x1'=>'y3'))
    );
}

这是我的CDetailView代码

<?php $this->widget('zii.widgets.CDetailView', array(
    'data'=>$model,
    'attributes'=>array(
         array(
             'name'=>'Table2.y3',
             'value'=>$model->Table2->x2,
         ),
         'y1',
         'y2'
    ),
)); ?>

我收到以下错误

Property "Table2.x1" is not defined. 

1 个答案:

答案 0 :(得分:0)

第一个问题:关系定义不正确(据我所知,从提供的信息中可以理解)

Table1

模型中的关系
public function relations(){
    return array(
         'Table2' => array(self::HAS_MANY, 'Table2', 'y3')
    );
}

因为table1模型的一个对象将有许多table2的对象

Table1

模型中的关系
public function relations(){
    return array(
         'Table1' => array(self::BELONGS_TO, 'Table1', 'y3')
    );
}

由于table2模型的一个对象属于某个表的对象..

现在正确定义关系后,您可以使用'value'=>$data->Table2->x2,打印关系中的值..