我 && yii2 (二)

今天来记录下yii2 的数据提供器,嗯,主要的流程呢,还是以代码说话吧

活动数据提供器

这里呢,我们会用到 ActiveDataProvider 这个类,传到数组元素呢,可以是查询条件,也可以包含分页信息

 1 /* 方法1 */
 2 public function actionShow()
 3 {
 4     $provider = new ActiveDataProvider([
 5         'query' => Country::find(),
 6         'pagination'    => [
 7             'pageSize'  => 4,
 8         ],
 9     ]);
10     $data = $provider->getModels();
11     var_dump($data);
12 }
13 /* 方法2: 活动数据提取器的使用  */
14 public function actionActiveData()
15 {
16     $query = new Query();
17     $provider = new ActiveDataProvider([
18         'query' => $query -> from('country'),
19         'pagination'    => [
20             'pageSize'  => 5
21         ]
22     ]);
23     $data = $provider->getModels();
24     var_dump( $data );
25 }

数组数据提供器

这个数据提供器,用到的 是 ArrayDataProvider 类

/* 数组数据提供器 */
public function actionArrayData()
{
    $query = new Query();
    $provider = new ArrayDataProvider([
        'allModels' => $query -> from('country')->all(),
        'sort'  => [
            'attributes'    => ['code' , 'name']
        ],
        'pagination'    => [
            'pageSize'  => 5
        ]
    ]);
    $data = $provider->getModels();
    print_r($data);
}

sql 数据提供器

在里用到到数据提供器类呢,就是 SqlDataProvider 类,里面的参数,见代码

 1 /* sql 数据提供器的使用 */
 2 public function actionSqlData()
 3 {
 4     $count = Yii::$app->db->createCommand('
 5         select count(*) from country where code=:code
 6     ' ,[':code' => 'US'])->queryScalar();
 7     $provider = new SqlDataProvider([
 8         'sql'   => " select * from country where code=:code" ,    #sql 语句
 9         'params'=> [':code' => 'US'],                     #查询条件对应的值 和 sql 语句中的 :code 对应
10         'totalCount'=>$count ,          #这里是数据总数
11         'sort'  => [                #这里就是在排序了
12             'attributes'    => [
13                 'code',
14             ]
15         ],
16         'pagination'    => [            #分页信息
17             'pageSize'  => 5
18         ]
19     ]);
20     $data = $provider-> getModels();
21     var_dump($data);
22 }
原文地址:https://www.cnblogs.com/zeopean/p/5360830.html