数据提供者和关系(Yii)

时间:2012-07-04 18:06:32

标签: php yii

我今天正在与一个problem挣扎,但我自己设法解决了这个问题。 现在我有另一个问题。我发现在这种情况下使用CActiveDataProvider类会更好。这是我的DataProvider的代码:

$dataProvider=new CActiveDataProvider('Category', array(
            'criteria'=>array(
                'with'=>array('products'),
                'condition'=>'t.id=1',
            ),
));

然后我将此数据提供程序传递给窗口小部件,但无法访问其值。 如果有人可以,请指导我完成整个过程。感谢。

2 个答案:

答案 0 :(得分:3)

在Yii社区的帮助下工作(谢谢:)) 这是控制器的代码:

$dataProvider=new CActiveDataProvider('Product', array(
    'criteria'=>array(
            'with'=>array('category'),
                'condition'=>'category.id=:id',
                'params'=>array(':id'=>$id),
    ),
));

答案 1 :(得分:0)

这取决于你的小部件需要什么。 CActiveDataProviderCActiveRecord的包装器,具有排序,分页和过滤的扩展功能。通常CActiveDataProviderCListView等zii小部件一起使用}或CGridView正在利用其排序和搜索功能。

因此,如果你想用列表或表格(可选)排序/过滤/分页来显示数据 - 在Yii中这样做的最方便的方法是使用描述的zii小部件或它们的扩展。

如果您只需要获取数据并以任何其他方式使用它,但没有CListViewCGridView提供的智能呈现机制 - 请使用CActiveRecord,因为它不会执行除了提取数据之外的任何其他内容。

  

我发现最好使用CActiveDataProvider类   情况

你可以同样使用CActiveRecord来实现关系的魔力