数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widgets 小物件里,方便终端用户进行分页与数据排序。
下面的数据提供者类都包含在Yii的发布版本里面:
yii\data\ActiveDataProvider:使用 yii\db\Query 或者 yii\db\ActiveQuery 从数据库查询数据并且以数组项的方式或者 Active Record 实例的方式返回。
yii\data\SqlDataProvider:执行一段SQL语句并且将数据库数据作为数组返回。
yii\data\ArrayDataProvider:将一个大的数组依据分页和排序规格返回一部分数据。
所有的这些数据提供者遵守以下模式:
// 根据配置的分页以及排序属性来创建一个数据提供者
$provider = new XyzDataProvider([
'pagination' => [...],
'sort' => [...],
]);
// 获取分页和排序数据
$models = $provider->getModels();
// 在当前页获取数据项的数目
$count = $provider->getCount();
// 获取所有页面的数据项的总数
$totalCount = $provider->getTotalCount();
你可以通过配置 yii\data\BaseDataProvider::pagination 和 yii\data\BaseDataProvider::sort的属性来设定数据提供者的分页和排序行为。 属性分别对应于 yii\data\Pagination 和 yii\data\Sort。 你也可以对它们配置false来禁用分页和排序特性。
Data widgets,诸如 yii\grid\GridView,有一个属性名叫 dataProvider ,这个属性能够提供一个 数据提供者的示例并且可以显示所提供的数据,例如,
echo yii\grid\GridView::widget([
'dataProvider' => $dataProvider,
]);
详细介绍这些数据提供者的使用方法请参考网址:http://www.yiichina.com/doc/guide/2.0/output-data-providers