假设我有模型User
与其自身有多对多的关系,命名为friends
.
so $user->friends
(or $model->friends
在视图中)给了我一个数组User
对象。我想将朋友显示为网格视图。但CGridView
数据为dataProvider
目的。谷歌搜索找到了将模型对象数组转换为dataProvider
对象如下所示。
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'gridUser',
'dataProvider' => new CArrayDataProvider($model->friends, array()),
));
现在使用这个我得到一个错误
属性“User.id”未定义。
UPDATE
public function relations()
{
return array(
'friends' => array(self::MANY_MANY, 'User', 'friendship(user_id, friend_id)'),
);
}
我使用两阶段构建如下所示的提供程序。但我发现它在分页方面给你带来了麻烦。我没有费心去解决这个问题,因为我正在做其他事情
$dataProvider = new CArrayDataProvider('User');
$dataProvider->setData($model->friends);
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'gridUser',
'dataProvider' =>$dataProvider,
));
话虽这么说,您的代码应该可以工作(请参阅 API 文档中的以下示例)。我怀疑您的关系中存在比提供的代码错误的属性。重新检查关系定义是否正确
来自 Yii 文档:
$rawData=Yii::app()->db->createCommand('SELECT * FROM tbl_user')->queryAll();
// or using: $rawData=User::model()->findAll(); <--this better represents your question
$dataProvider=new CArrayDataProvider($rawData, array(
'id'=>'user',
'sort'=>array(
'attributes'=>array(
'id', 'username', 'email',
),
),
'pagination'=>array(
'pageSize'=>10,
),
));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)