专栏首页琯琯博客Yii2 学习笔记之数据提供者

Yii2 学习笔记之数据提供者

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

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

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);
}

(完)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Yii2 学习笔记之 GridView DetailView

    琯琯
  • Yii2 学习笔记之分页

    琯琯
  • Yii2 学习笔记之场景应用

    琯琯
  • 【全栈修炼】RESTful架构及实践修炼宝典

    REST:(Representational State Transfer)即表现层状态转换,定义了资源的通用访问格式,是一种网络应用程序的设计风格和开发方式。

    pingan8787
  • 【全栈修炼】422- RESTful 架构及实践 修炼宝典

    REST:(Representational State Transfer)即表现层状态转换,定义了资源的通用访问格式,是一种网络应用程序的设计风格和开发方式。

    pingan8787
  • AI(四):对抗搜索

    https://blog.csdn.net/NGUever15/article/details/89160951

    用户7886150
  • Android动态布局使用详解

    1、无xml : 一个父类布局包含一个子父类布局,子父类布局中包含ImageView

    砸漏
  • Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器

      本篇文章主要讲解的是如何在Linux CentOS7操作系统搭建.NET Core运行环境并发布ASP.NET Core应用程序,以及配置Nginx反向代理...

    追逐时光者
  • 理解构造函数与原型对象

    在Es6之前,由于javascript没有对类的支持,也就是说它并不具备如传统后台语言(比如java)拥有类的功能,所谓类就是用来描述事物中的属性和行为的,类的...

    itclanCoder
  • 我来重新学习 javascript 的面向对象(part 5)

    这是最后的最后了,我会顺便总结一下各种继承方式的学习和理解。(老板要求什么的,管他呢)

    前端正义联盟

扫码关注云+社区

领取腾讯云代金券