数组数据采用ArrayDataProvider 动态分页应用(可用于接口缓存场景) [ 2.0 版本 ]

ArrayDataProvider 是yii自带的一个数组动态分页输出提供器类,可为视图层提供分页,排序等功能。在我们为第三方提供接口时也经常会遇到分页排序等逻辑需求,复用该类将事半功倍。

适用场景:数组分页排序,缓存分页接口

常遇到开发场景

  • 1、数据库读数据分页,设定缓存键值与页数及分页大小相关,每次分页大小调整新建缓存。造成不同分页缓存失效不一致,甚至有浪费内存的情况。
  • 2、一定业务量维护数组(如:行政区域,业务分类)动态分页获取等。

解决方案:ArrayDataProvider 注:处理一定规模数组,不要超过内存限制

示例数组生成:


$arr = [];
$i=0;
while ($i++<1000){
    array_push($arr,[
       'key' => $i,
       'value'=> mt_rand(0,100),   //随机数组生成代码  1000条 ,键值有key,value
    ]
    );
}

处理:


$page_size = Yii::$app->request->get('page_size',10);      //可以通过page_size 指定分页大小。默认为10

$provider = new \yii\data\ArrayDataProvider([
    'allModels' =>  $arr,
    'sort' => [
        'attributes' => ['key','value'],        //url排序参数,
    ],
    'pagination' => [
        'pageSize' => $page_size,               //分页大小
    ],
]);

//var_dump($provider->getModels());
echo json_encode($provider->getModels());

示例

http://xx.xxx.com/test/index(默认地址) 默认返回 前十条数据

http://xx.xxx.com/test/index?page=2 第二页数据

http://xx.xxx.com/test/index?sort=-key 数组key值倒序,倒序排序后十条

http://xx.xxx.com/test/index?sort=-key&page=3&page_size=20 分页大小为20,倒序排序第三页

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值