数组数据采用ArrayDataProvider 动态分页应用(可用于接口缓存场景) [ 2.0 版本 ]
来源:互联网 发布:广电网络电视怎么点播 编辑:程序博客网 时间:2024/05/21 22:29
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,倒序排序第三页
0 0
- 数组数据采用ArrayDataProvider 动态分页应用(可用于接口缓存场景) [ 2.0 版本 ]
- 基于PHP多维数组的分页实现(可用于在线购物车等应用)
- .net2.0中新增的Substitution控件--动态更新缓存页的部分(也可用于局部刷新)
- 数据库限制结果集行数(可用于分页)
- python中对numpy数组的保存(图像分析image2array后保存数组可用于进一步数据分析)
- 采用redis缓存数据
- easyMule自动关机工具(可用于1.X和2.0版本)
- easyMule自动关机工具(可用于1.X和2.0版本)
- Memcache针对不同场景数据应用缓存策略
- highchart 动态刷新(可用于制作股票时时走势)
- c#实现动态悬浮窗代码(可用于检测)
- 自然数转换为二维矩阵可用于笛卡尔乘积型数据进行内存分页
- javascript 版分页类, 可用于ajax
- javascript 版分页类, 可用于ajax
- JTable从模型加载数据,可用于动态数据加载,提高性能
- 高可用高性能系统(一)系统应用场景
- 获取APP版本信息,可用于更新
- PHP缓存应用场景分析
- PhalApi那些事儿
- MySQL数据库免安装root初始密码
- mac连接到apple ID服务器时出错解决方案之一
- python练习100例(上)(解答)
- 升级ubuntu中的gcc和g++版本
- 数组数据采用ArrayDataProvider 动态分页应用(可用于接口缓存场景) [ 2.0 版本 ]
- 【框架-MFC】保存HICON或HCURSOR对象到*.ico文件
- 学习笔记:iOS布局库—MyLayout库之表格布局MyTableLayout
- 完美解决 Attribute “titleTextStyle” has already been defined
- ios开发--如何在 iOS 中解决循环引用的问题(FBRetainCycleDetector框架)
- linux包解压
- eclipse插件开发 -右键菜单 - popup menu
- Java ——多线程编程
- 学习笔记:iOS布局库—MyLayout库之流式布局MyFlowLayout