Yii提供了一組封裝了分頁和排序數據提供程序類。數據提供者實現了 yii\data\DataProviderInterface 接口。它支持檢索排序和分頁數據。數據提供者通常是窗口小部件一起使用。
Yii 包括 -
* ActiveDataProvider ? 使用 yii\db\ActiveQuery 或 yii\db\Query 來從數據庫中查詢數據。
* SqlDataProvider ? 執行SQL語句并返回數組形式的數據。
* ArrayDataProvider ? 使用一個大的數組,并返回它的一個切片。
您可以通過配置分頁和排序的屬性來定義數據提供者的排序和分頁的行為。數據窗口小部件,如:yii\grid\GridView,它有一個 dataProvider 屬性,它需要一個數據提供者實例,并在屏幕上顯示的數據。
[TOC]
#### Active數據提供者
~~~
public function actionTest(){
$query = User::find();
$provider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 2,
],
]);
// returns an array of users objects
$users = $provider->getModels();
var_dump($users);
}
~~~
#### SQL數據提供者
> yii\data\SqlDataProvider 類是使用原始的SQL語句方式工作的。
~~~
public function actionTest() {
$count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM user')->queryScalar();
$provider = new SqlDataProvider([
'sql' => 'SELECT * FROM user',
'totalCount' => $count,
'pagination' => [
'pageSize' => 5,
],
'sort' => [
'attributes' => [
'id',
'name',
'email',
],
],
]);
// returns an array of data rows
$users = $provider->getModels();
var_dump($users);
}
~~~
#### 數組數據提供者
~~~
public function actionTest() {
$data = User::find()->asArray()->all();
$provider = new ArrayDataProvider([
'allModels' => $data,
'pagination' => [
'pageSize' => 3,
],
'sort' => [
'attributes' => ['id', 'name'],
],
]);
// get the rows in the currently requested page
$users = $provider->getModels();
var_dump($users);
}
~~~
- 基礎教程
- 入門安裝
- Yii2 composer 安裝慢解決
- Cookies
- 數據庫操作
- 數據提供者
- 助手類
- 驗證規則
- GridView
- DetailView
- YII2分頁
- JS、CSS的引用
- Excel導出
- 中文轉拼音
- 發送郵件
- 第三方插件
- Session跨域共享
- Url跨域訪問
- 場景應用
- 查詢條件鏈
- Session分布式共享
- Redis的使用
- mongodb
- 高級教程
- 自定義gii模板
- 角色權限管理(RBAC)
- user組件的配置
- 國際化(I18N)
- 小部件(Widget)
- 模塊(Module)
- 行為(Behavior)
- 緩存(Cache)
- migrate 數據庫遷移
- phpstorm
- 快捷鍵
- 自定義
- 其它插件