【问题标题】:Dataprovider and relations (Yii)数据提供者和关系 (Yii)
【发布时间】:2025-11-22 16:15:02
【问题描述】:

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

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

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

【问题讨论】:

  • 你到底在做什么?结果如何?
  • 我想完成与 this 示例中相同的结果,但通过 List 小部件。

标签: php yii


【解决方案1】:

在 Yii 社区的帮助下成功了(谢谢 :))
这是控制器的代码:

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

【讨论】:

  • 我已经设置了分页。但是当我点击下一步时,它显示没有找到记录。但我有记录。请帮助我....
【解决方案2】:

这取决于您的小部件需要什么。 CActiveDataProviderCActiveRecord 的包装器,具有排序、分页和过滤的扩展功能。 通常CActiveDataProviderCListViewCGridView 等zii 小部件一起使用它的排序和搜索功能。

因此,如果您想通过(可选)排序/过滤/分页以列表或表格的形式显示数据 - 在 Yii 中最方便的方法是使用描述的 zii 小部件或其扩展。

如果您只需要获取数据并以任何其他方式使用它,但没有 CListViewCGridView 提供的智能渲染机制 - 请使用 CActiveRecord,因为它除了获取数据。

我发现最好使用 CActiveDataProvider 类 情况

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

【讨论】:

  • 是的,我需要分页和过滤。你能指导我完成整个过程吗?
  • 您的小部件需要什么输入类型
  • 它必须简单地从数据库中检索信息。无需输入。抱歉,如果不清楚。
  • ok CVarDumper::Dump($CActiveDataProvider,100,true) 看看你的活跃提供者是否真的有什么东西或者它是空的
  • 是的,它有我需要的数据。