Php yii框架:$dataProvider如何获取数据及其工作原理?

Php yii框架:$dataProvider如何获取数据及其工作原理?,php,yii,Php,Yii,我正在学习YII框架,我是初学者 我创建了一个CRUD选项,并在我的视图文件中找到了以下脚本 <?php $this->widget('zii.widgets.CListView', array( 'dataProvider'=>$dataProvider, 'itemView'=>'_view', )); ?> 但是我不明白$dataprovider是如何从数据库中获取数据的,我在Model类中没有看到任何相关函数,而且我如何更新数据是$da

我正在学习YII框架,我是初学者

我创建了一个CRUD选项,并在我的视图文件中找到了以下脚本

<?php $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_view',
)); ?>

但是我不明白$dataprovider是如何从数据库中获取数据的,我在Model类中没有看到任何相关函数,而且我如何更新数据是$dataprovider,(我必须用正确的数据替换一个外键,即family\u id和family\u name)

Yii数据提供者(有很多,最简单的方法是使用
cactivedaptaprovider
)就是可以用来填充网格(
CGridView
小部件)或

控制器是应用程序中向视图提供数据的部分。控制器中可能有一两行代码,您可以在其中创建此数据提供程序,以便将其发送到视图

您可以自己创建一个数据提供程序(),只需实例化它,但是如果您使用gii或一些simlitar设备来生成模型,那么您的模型类应该有一个
search()
方法。这是为您创建的帮助程序方法,因此您不必自己实例化数据提供程序。(调用此方法时,将返回一个新的
cactivedaptaprovider

正如我所说,数据提供程序只是一个模型容器。在您的情况下,(当您创建
CListView
),它可能只包含一个模型(您试图显示其详细信息的模型)。数据提供程序也可用于网格,在这种情况下,一个数据提供程序将包含多个模型,而不是一个模型(通常,每个网格行一个)

p.s.:如果您需要更改外键和/或属性名称,则需要在模型类(即,
ActiveRecord
)中进行更改,而不是在数据提供程序中进行更改。数据提供程序以及您使用的任何小部件仅用于显示目的