Php Yii将相关数据放入GridView

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

“我的视图”允许用户查看一个人的详细信息,包括他们所在的家庭。这是在DB中完成的,在两者之间有一个Person表、Family表和familyMembership链接表

Person的CActiveRecord模型中的关系如下:

'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',
));

谢谢你的帮助!