数组数据采用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 yiidataArrayDataProvider([
"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,倒序排序第三页
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 在yii中使用分页
- 下一篇: 高德,百度,Google地图定位偏移以及坐标系转换