1. 程式人生 > >yii---對陣列進行分頁

yii---對陣列進行分頁

很多時候,我們會對多個數據進行分頁處理,例如我最近開發的一個功能,系統訊息,系統訊息的來源是多個表,而且多個表之間的資料沒有任何關聯,這個時候,需要對多個表進行查詢,查詢返回的資料進行分頁,而且採用的是非同步無重新整理分頁。

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

怎樣引入?

開啟看它的名稱空間:

namespace yii\data;

到專案的引用方式:

use yii\data\ArrayDataProvider;

具體使用:

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