前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Yii2 学习笔记之数据提供者

Yii2 学习笔记之数据提供者

作者头像
guanguans
发布2018-05-09 16:30:16
7120
发布2018-05-09 16:30:16
举报
文章被收录于专栏:琯琯博客琯琯博客

Yii提供了一组封装了分页和排序数据提供程序类。数据提供者实现了 yii\data\DataProviderInterface 接口。它支持检索排序和分页数据。数据提供者通常是窗口小部件一起使用。 Yii 包括:

  • ActiveDataProvider − 使用 yii\db\ActiveQuery 或 yii\db\Query 来从数据库中查询数据。
  • SqlDataProvider − 执行 SQ 语句并返回数组形式的数据。
  • ArrayDataProvider − 使用一个大的数组,并返回它的一个切片。您可以通过配置分页和排序的属性来定义数据提供者的排序和分页的行为。数据窗口小部件,如:yii\grid\GridView,它有一个 dataProvider 属性,它需要一个数据提供者实例,并在屏幕上显示的数据。

Active 数据提供者

代码语言:javascript
复制
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语句方式工作的。

代码语言:javascript
复制
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);
}

数组数据提供者

代码语言:javascript
复制
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);
}

(完)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Active 数据提供者
  • SQL 数据提供者
  • 数组数据提供者
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档