没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\data\SqlDataProvider

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

SqlDataProvider implements a data provider based on a plain SQL statement.

SqlDataProvider provides data in terms of arrays, each representing a row of query result.

Like other data providers, SqlDataProvider also supports sorting and pagination. It does so by modifying the given $sql statement with "ORDER BY" and "LIMIT" clauses. You may configure the $sort and $pagination properties to customize sorting and pagination behaviors.

SqlDataProvider may be used in the following way:

$count = Yii::$app->db->createCommand('
    SELECT COUNT(*) FROM user WHERE status=:status
', [':status' => 1])->queryScalar();

$dataProvider = new SqlDataProvider([
    'sql' => 'SELECT * FROM user WHERE status=:status',
    'params' => [':status' => 1],
    'totalCount' => $count,
    'sort' => [
        'attributes' => [
            'age',
            'name' => [
                'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
                'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
                'default' => SORT_DESC,
                'label' => 'Name',
            ],
        ],
    ],
    'pagination' => [
        'pageSize' => 20,
    ],
]);

// get the user records in the current page
$models = $dataProvider->getModels();

Note: if you want to use the pagination feature, you must configure the $totalCount property to be the total number of rows (without pagination). And if you want to use the sorting feature, you must configure the $sort property so that the provider knows which columns can be sorted.

For more details and usage information on SqlDataProvider, see the guide article on data providers.

公共属性

隐藏继承的属性

属性类型描述被定义在
$behaviors yii\base\Behavior[] List of behaviors attached to this component yii\base\Component
$count integer 当前页中的数据模型数。 yii\data\BaseDataProvider
$db yii\db\Connection|array|string The DB connection object or the application component ID of the DB connection. yii\data\SqlDataProvider
$id string 在所有数据提供器中唯一标识该数据提供器的 ID,如果未设置该 ID, 则按以下方式自动生成: - 第一个数据提供器 ID 为空。 - 第二个和所有后续的数据提供者 IDs 是:"dp-1","dp-2" 等。 yii\data\BaseDataProvider
$key string|callable The column that is used as the key of the data models. yii\data\SqlDataProvider
$keys array models 对应的键值列表。models 中的每个数据模型 都由该数组中相应的键值唯一标识。 yii\data\BaseDataProvider
$models array 当前页中的数据模型列表。 yii\data\BaseDataProvider
$pagination yii\data\Pagination|false 分页对象。如果为 false,则表示禁用分页。 yii\data\BaseDataProvider
$params array Parameters (name=>value) to be bound to the SQL statement. yii\data\SqlDataProvider
$sort yii\data\Sort|boolean 排序对象。如果为 false,则表示排序被禁用。 yii\data\BaseDataProvider
$sql string The SQL statement to be used for fetching data rows. yii\data\SqlDataProvider
$totalCount integer 数据模型总数。 yii\data\BaseDataProvider

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\Component
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of a component property. yii\base\Component
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Component
__set() Sets the value of a component property. yii\base\Component
__unset() Sets a component property to be null. yii\base\Component
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Component
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Component
className() Returns the fully qualified name of this class. yii\base\BaseObject
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getCount() 返回当前页中的数据模型数。 yii\data\BaseDataProvider
getKeys() 返回与数据模型关联的键值。 yii\data\BaseDataProvider
getModels() 返回当前页中的数据模型。 yii\data\BaseDataProvider
getPagination() 返回此数据提供器使用的分页对象。 注意,我们应该先调用 prepare() 或者 getModels() 以获取 yii\data\Pagination::$totalCountyii\data\Pagination::$pageCount 的正确的值。 yii\data\BaseDataProvider
getSort() 返回此数据提供器使用的排序对象。 yii\data\BaseDataProvider
getTotalCount() 返回数据模型总数。 当 $pagination 为 false,值与 $count 相同。 否则,将调用 prepareTotalCount() 获取数量。 yii\data\BaseDataProvider
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
init() Initializes the DB connection component. yii\data\SqlDataProvider
off() Detaches an existing event handler from this component. yii\base\Component
on() Attaches an event handler to an event. yii\base\Component
prepare() 准备数据模型和键。 yii\data\BaseDataProvider
refresh() 刷新数据提供器 调用此方法后,如果再次调用 getModels()getKeys() 或者 getTotalCount(), 它们将重新执行查询并返回可用的最新数据。 yii\data\BaseDataProvider
setKeys() 设置与数据模型关联的键值。 yii\data\BaseDataProvider
setModels() 设置当前页中的数据模型。 yii\data\BaseDataProvider
setPagination() 为数据提供器设置分页组件。 yii\data\BaseDataProvider
setSort() 设置此数据提供器的排序定义。 yii\data\BaseDataProvider
setTotalCount() 设置数据模型总数。 yii\data\BaseDataProvider
trigger() Triggers an event. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述被定义在
prepareKeys() 准备与当前可用数据模型关联的键。 yii\data\SqlDataProvider
prepareModels() 准备将在当前页中可用的数据模型。 yii\data\SqlDataProvider
prepareTotalCount() 返回一个值,该值指示此数据提供器中的数据模型总数。 yii\data\SqlDataProvider

属性详情

$db 公共 属性

The DB connection object or the application component ID of the DB connection. Starting from version 2.0.2, this can also be a configuration array for creating the object.

$key 公共 属性

The column that is used as the key of the data models. This can be either a column name, or a callable that returns the key value of a given data model.

If this is not set, the keys of the $models array will be used.

public string|callable $key null
$params 公共 属性

Parameters (name=>value) to be bound to the SQL statement.

public array $params = []
$sql 公共 属性

The SQL statement to be used for fetching data rows.

public string $sql null

方法详情

init() 公共 方法

Initializes the DB connection component.

This method will initialize the $db property to make sure it refers to a valid DB connection.

public void init()
throws yii\base\InvalidConfigException

if $db is invalid.

prepareKeys() 受保护 方法

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

protected array prepareKeys($models)
$models array

可用的数据模型

return array

键列表

prepareModels() 受保护 方法

准备将在当前页中可用的数据模型。

protected array prepareModels()
return array

可用的数据模型

prepareTotalCount() 受保护 方法

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

protected integer prepareTotalCount()
return integer

此数据提供器中的数据模型总数。