我有以下关系方案:
1 portfolio -> Many Users in each Portfolio -> Each User owns many Products
实体:投资组合,用户,产品
我想要显示的是一页: 1.投资组合的名称 2.用户的标题 3.该用户拥有的所有产品的CGridView
看来,如果没有使用CGridView,您可以适当地填充模型,然后使用foreach循环遍历每个用户关系,然后循环遍历与该用户相关的产品。并为产品和用户创建render_partial视图。
然而,我完全失去了如何使用CGridView完成此任务。
非常感谢任何建议!
答案 0 :(得分:0)
您想在CGridView中呈现用户的产品吗?
要使用CGridView渲染数据,您需要传入CDataProvider来填充视图。所以问题是:你如何为HAS_MANY关系制作一个CDataProvider?
令人惊讶的是,CActiveDataProvider
不支持这种方式的关系。您需要做什么来获取关系并将该数据传递到CArrayDataProvider
。假设$user->products
关系,您可以这样做:
$dataProvider = new CArrayDataProvider($user->products, array());
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
'id', // your columns here
),
));
这不太理想,但它有效。对于这种特定技术,我们要归功于此:http://learnyii.blogspot.com/2010/12/yii-how-to-display-related-hasmany-grid.html