【发布时间】:2014-09-04 20:50:51
【问题描述】:
我的视图让用户可以看到一个人的详细信息,包括他们所在的家庭。这是在数据库中完成的,其中包含 Person 表、Family 表和两者之间的 familyMembership 链接表。
CActiveRecord 模型中 Person 的关系是这样的:
'families' => array(self::MANY_MANY, 'Family', 'familymembership(Person, Family)'),
在我的个人控制器中,我想以 TbGridView(CGridView 但 Bootstrap)将接受的方式(数据提供者)将变量传递到具有相关数据的视图中。控制器调用 person 模型的 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)'
Family 模型没有 id 属性,我不明白小部件为什么要寻找这样的属性。
这里出了什么问题?
谢谢。
【问题讨论】: