我使用Yii应用程序进行了相对简单的设置,但我在以下场景中努力访问表中的数据:
两张桌子:
payments_info (id, data)
:其中id是主要自动增量键,模型类名称为PaymentInfo
payments (id, payment_id, other_columns)
:此处id又是主键,payment_id是外键,指向payment_info表中的一个记录,型号名称付款
在Payment模型类中的relations数组中,我有以下内容:
'payment_id'=>array(self::BELONGS_TO, 'PaymentInfo', 'id'),
我还没有在PaymentInfo模型的关系中添加任何内容,因为从技术上讲,它对另一个表格一无所知。
我有一个控制器从Payments模型创建一个CActiveDataProvider并显示所有记录。在其中,我希望有一个显示“数据”字段的字段。 PaymentInfo模型中的列,但我不知道如何到达那里。
在控制器的cdbcriteria中,用于创建我尝试使用的数据提供程序:
$criteria->with = array('payment_id');
然后在视图中,在CGridView的columns变量里面显示我添加的数据提供者:
array(
'name'=>'payment_id',
'visible'=>true,
'value'=> $data->payment_id->data,
),
我也尝试过添加'的不同组合。或"围绕$ data变量但到目前为止没有成功。我设法显示正确的payment_id,但我无法弄清楚如何显示数据'来自另一个表的价值。任何提示赞赏!
答案 0 :(得分:0)
您可以使用以下方法从YII中的另一个关系表中获取数据
关系函数中的支付模型
public function relations()
{
return array(
'pinfos' => array(self::BELONGS_TO, 'PaymentInfo', 'payment_id'),
);
}
关系函数中的PaymentInfo模型
public function relations()
{
return array(
'payments' => array(self::HAS_MANY, 'Payment', 'payment_id'),
);
}
并且在zii.widgets.grid.CGridView中放了这个
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'post-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'pinfos.data',
/* other fields goes here*/
array(
'class'=>'CButtonColumn',
),
),
)); ?>
无需做任何其他事情。