Class yii\data\ArrayDataProvider

继承yii\data\ArrayDataProvider » yii\data\BaseDataProvider » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\data\DataProviderInterface
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/data/ArrayDataProvider.php

ArrayDataProvider 实现基于数据数组实现数据提供者.

$allModels 属性包含所有可以排序和/或分页的数据模型. ArrayDataProvider 将在排序和/或分页后提供数据. 你可以配置 $sort$pagination 属性来自定义排序和分页行为.

$allModels 数组中的元素可以是对象(eg. 模型对象)或关联数组(eg. DAO 的查询结果). 确保将 $key 属性设置为唯一标识数据记录的字段的名称, 如果没有这样的字段, 则将其设置为false.

yii\data\ActiveDataProvider 相比, ArrayDataProvider 的效率可能较低, 因为它需要准备好 $allModels.

ArrayDataProvider 可以按以下方式使用:

$query = new Query;
$provider = new ArrayDataProvider([
    'allModels' => $query->from('post')->all(),
    'sort' => [
        'attributes' => ['id', 'username', 'email'],
    ],
    'pagination' => [
        'pageSize' => 10,
    ],
]);
// get the posts in the current page
$posts = $provider->getModels();

Note: 如果要使用排序功能, 则必须配置 $sort 属性, 以便提供者知道可以对哪些列进行排序.

有关 ArrayDataProvider 的更多详细信息和使用信息, 请参阅 权威指南 - 显示数据 - 数据提供器(Data Providers).

公共属性

隐藏继承的属性

属性类型描述定义在
$allModels array 未分页或排序的数据. yii\data\ArrayDataProvider
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. yii\base\Component
$count integer 当前页面中的数据模型的数量. yii\data\BaseDataProvider
$id string 在所有数据提供者中唯一标识数据提供者的 ID. yii\data\BaseDataProvider
$key string|callable 用作数据模型的键的列. yii\data\ArrayDataProvider
$keys array $models 对应的键值列表. yii\data\BaseDataProvider
$modelClass string 将要表示的 Model 类的名称. yii\data\ArrayDataProvider
$models array 当前页面中的数据模型列表. yii\data\BaseDataProvider
$pagination yii\data\Pagination|false 分页对象. yii\data\BaseDataProvider
$sort yii\data\Sort|boolean 排序对象. yii\data\BaseDataProvider
$totalCount integer 可能的数据模型的总数. yii\data\BaseDataProvider

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getCount() 返回当前页面中的数据模型的数量. yii\data\BaseDataProvider
getKeys() 返回与数据模型关联的键值列表. yii\data\BaseDataProvider
getModels() 返回当前页面中的数据模型列表. yii\data\BaseDataProvider
getPagination() 返回此数据提供者使用的分页对象. yii\data\BaseDataProvider
getSort() 返回此数据提供者使用的排序对象. yii\data\BaseDataProvider
getTotalCount() 返回数据模型的总数. yii\data\BaseDataProvider
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\base\BaseObject
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
prepare() 准备数据模型和键. yii\data\BaseDataProvider
refresh() 刷新数据提供者. yii\data\BaseDataProvider
setKeys() 设置与数据模型关联的键值列表. yii\data\BaseDataProvider
setModels() 在当前页面中设置数据模型. yii\data\BaseDataProvider
setPagination() 为此数据提供者设置分页. yii\data\BaseDataProvider
setSort() 为此数据提供者设置排序定义。 yii\data\BaseDataProvider
setTotalCount() 设置数据模型的总数. yii\data\BaseDataProvider
trigger() 触发事件. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述定义在
prepareKeys() 准备与当前可用数据模型关联的键. yii\data\ArrayDataProvider
prepareModels() 准备将在当前页面中提供的数据模型. yii\data\ArrayDataProvider
prepareTotalCount() 返回一个值, 该值指示此数据提供者中的数据模型总数. yii\data\ArrayDataProvider
sortModels() 根据给定的排序定义对数据模型进行排序. yii\data\ArrayDataProvider

属性详情

$allModels public 属性

未分页或排序的数据.

启用分页时, 此属性通常包含比 $models 更多的元素.

数组元素必须使用从0开始的整数键.

public array $allModels null
$key public 属性

用作数据模型的键的列.

它可以是列名称, 也可以是可返回给定数据模型的键值的可调用对象.

如果未设置, 将使用 $models 数组的索引.

参见 getKeys().

public string|callable $key null
$modelClass public 属性 (可用自版本: 2.0.9)

将要表示的 Model 类的名称.

该属性用于获取列的名称.

public string $modelClass null

方法详情

prepareKeys() protected 方法

准备与当前可用数据模型关联的键.

protected array prepareKeys ( $models )
$models array

可用的数据模型.

return array

键.

prepareModels() protected 方法

准备将在当前页面中提供的数据模型.

protected array prepareModels ( )
return array

可用的数据模型.

prepareTotalCount() protected 方法

返回一个值, 该值指示此数据提供者中的数据模型总数.

protected integer prepareTotalCount ( )
return integer

此数据提供者中的数据模型总数.

sortModels() protected 方法

根据给定的排序定义对数据模型进行排序.

protected array sortModels ( $models, $sort )
$models array

要排序的模型.

$sort yii\data\Sort

排序定义.

return array

排序后的数据模型.