Php Yii将相关数据放入GridView
“我的视图”允许用户查看一个人的详细信息,包括他们所在的家庭。这是在DB中完成的,在两者之间有一个Person表、Family表和familyMembership链接表 Person的CActiveRecord模型中的关系如下:Php Yii将相关数据放入GridView,php,gridview,yii,Php,Gridview,Yii,“我的视图”允许用户查看一个人的详细信息,包括他们所在的家庭。这是在DB中完成的,在两者之间有一个Person表、Family表和familyMembership链接表 Person的CActiveRecord模型中的关系如下: 'families' => array(self::MANY_MANY, 'Family', 'familymembership(Person, Family)'), 在我的person控制器中,我希望以TbGridView(CGridView但Bootstra
'families' => array(self::MANY_MANY, 'Family', 'familymembership(Person, Family)'),
在我的person控制器中,我希望以TbGridView(CGridView但Bootstrap)将接受的方式(数据提供程序)将变量传递到包含相关数据的视图中。控制器调用人物模型的getFamilies()函数:
public function getFamilies() {
// returns an array of Family objects related to this Person model
$familiesArray = $this->getRelated('families');
// puts this array into a CArrayDataProvider
$families = new CArrayDataProvider($familiesArray);
return $families;
}
返回值返回控制器,然后在renderPartial()调用中传递。该视图具有如下TbGridView小部件初始化:
$this->widget('bootstrap.widgets.TbGridView',
array(
//the CArrayDataProvider from the model function
'dataProvider' => $families,
'columns' => array(
array(
'name' => 'Family Name',
// Example field from Family model
'value' => '$data->familyName'
)
)
));
但是,这样做会导致以下错误:
未定义“属性”Family.id。(D:\wamp\www\yii\framework\base\CComponent.php:130)
家庭模型没有id属性,我不明白为什么小部件要寻找这样的属性
这里怎么了
谢谢。引用中的文档,您必须提供一个关键字字段
:
原始数据数组中的元素可以是对象(例如模型对象)或关联数组(例如DAO的查询结果)。请确保将keyField属性设置为唯一标识数据记录的字段的名称,如果没有这样的字段,则设置为false
默认情况下,keyField
将设置为“id”,因此您需要使用您的家庭型号主键覆盖它:
<?php
$familyDataProvider = new CArrayDataProvider($rawData, array(
'keyField' => 'yourPkNameHere',
));
谢谢你的帮助!