zoukankan      html  css  js  c++  java
  • yii---对数组进行分页

    很多时候,我们会对多个数据进行分页处理,例如我最近开发的一个功能,系统消息,系统消息的来源是多个表,而且多个表之间的数据没有任何关联,这个时候,需要对多个表进行查询,查询返回的数据进行分页,而且采用的是异步无刷新分页。

    使用的是YII的ArrayDataProvider:具体位置:

    怎样引入?

    打开看它的命名空间:

    namespace yiidata;

    到项目的引用方式:

    use yiidataArrayDataProvider;

    具体使用:

    public function actionMessagesystem(){
        $list = [
            array('id'=>1,'username'=>'aa','password'=>'aaaaaaaaaaaa','create_time'=>1),
            array('id'=>2,'username'=>'bb','password'=>'bbbbbbbbbbbb','create_time'=>3),
            array('id'=>3,'username'=>'cc','password'=>'cccccccccccc','create_time'=>5),
            array('id'=>4,'username'=>'dd','password'=>'dddddddddddd','create_time'=>7),
            array('id'=>5,'username'=>'ee','password'=>'eeeeeeeeeeee','create_time'=>8),
            array('id'=>6,'username'=>'ff','password'=>'ffffffffffff','create_time'=>9),
            array('id'=>7,'username'=>'gg','password'=>'gggggggggggg','create_time'=>12),
            array('id'=>8,'username'=>'hh','password'=>'hhhhhhhhhhhh','create_time'=>10),
            array('id'=>9,'username'=>'jj','password'=>'jjjjjjjjjjjj','create_time'=>10),
            array('id'=>10,'username'=>'qq','password'=>'qqqqqqqqqqqq','create_time'=>10),
            array('id'=>11,'username'=>'www','password'=>'wwwwwwwwwww','create_time'=>20),
            array('id'=>12,'username'=>'xx','password'=>'xxxxxxxxxxxx','create_time'=>10),
            array('id'=>13,'username'=>'zz','password'=>'zzzzzzzzzzzz','create_time'=>10),
        ];
        // $page = 2;
        $provider = new ArrayDataProvider([
            'allModels' => $list,
            'sort' => [
                'attributes' => ['id', 'username', 'password','create_time'],
                'defaultOrder' => [
                    'create_time'=>SORT_DESC,
                    'id'=>SORT_ASC
                ]
            ],
            'pagination' => [
                'page' => 0,
                'pageSize' => 3
            ],
        ]);
        echo $provider->getCount(); // 获取分页的数量
        echo $provider->getTotalCount(); //获取分页总数
        $lists = $provider->getModels(); // 获取分页后的数据
        p($lists); 
        echo "message system";
    }

    注意这里 page=>0 表示的是异步请求第一页,如果不是异步可以这样做:

    示例
    
    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,倒序排序第三页
    

    参考:

    https://blog.csdn.net/baijingdong/article/details/53302485
  • 相关阅读:
    linux打包解压包(.tar .gz .tar.gz .zip)
    centos安装fusesshfs通过挂载目录实现数据双向同步
    WSL远程访问Windows下的MySQL方法
    Linux中hugepage的使用方法
    Python科普系列——类与方法(下篇)
    Treevalue(0x02)——函数树化详细解析(上篇)
    Treevalue(0x03)——函数树化详细解析(下篇)
    Python科普系列——类与方法(上篇)
    个人网站迁移之旅:从博客到知识库,从 Hexo 到 Docusaurus
    wpf 动画结束后保留end值,动画结束后会失去绑定,可以在completed事件重新进行绑定
  • 原文地址:https://www.cnblogs.com/e0yu/p/10118699.html
Copyright © 2011-2022 走看看