鍍金池/ 問答/PHP/ laravel 分頁問題

laravel 分頁問題

從接口獲取的數(shù)據(jù) 合并 數(shù)據(jù)庫數(shù)據(jù)后的數(shù)組 如何分頁顯示

回答
編輯回答
編輯回答
巷尾

自行手動(dòng)構(gòu)建,

想要帶 bootstrap 的分頁器,new Illuminate\Pagination\LengthAwarePaginator
想要簡單的分頁器,new Illuminate\Pagination\Paginator

具體的構(gòu)建,可以參考源代碼中 Orm 調(diào)用時(shí)的實(shí)例化分頁器,位置在 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php 中的 paginate 方法

2018年6月27日 12:20
編輯回答
青瓷
手動(dòng)創(chuàng)建分頁器

有時(shí)候你可能想要通過傳遞數(shù)組數(shù)據(jù)來手動(dòng)創(chuàng)建分頁實(shí)例,
你可以基于自己的需求通過創(chuàng)建 Illuminate\Pagination\Paginator 
或 Illuminate\Pagination\LengthAwarePaginator 實(shí)例來實(shí)現(xiàn)。

Paginator 類不需要知道結(jié)果集中數(shù)據(jù)項(xiàng)的總數(shù);
不過,正因如此,該類也沒有提供獲取最后一頁索引的方法。
LengthAwarePaginator 接收參數(shù)和 Paginator 幾乎一樣,只是,它要求傳入結(jié)果集的總數(shù)。

換句話說,Paginator 對應(yīng) simplePaginate 方法,
而LengthAwarePaginator 對應(yīng) paginate 方法。

    注:當(dāng)手動(dòng)創(chuàng)建分頁器實(shí)例的時(shí)候,應(yīng)該手動(dòng)對傳遞到分頁器的結(jié)果集進(jìn)行“切片”,
    如果你不確定怎么做,查看 PHP 函數(shù) array_slice。

---上面來自 laravel 學(xué)院手冊

use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
use Illuminate\Http\Request;
# 僅做演示 #
function userList(Request $request) {
  $users = [
    ['username'=>'zhangsan', 'age'=>26],
    ['username'=>'lisi', 'age'=>23],
    ['username'=>'wangwu', 'age'=>62],
    ['username'=>'zhaoliu', 'age'=>46],
    ['username'=>'wangmazi', 'age'=>25],
    ['username'=>'lanzi', 'age'=>24],
    ['username'=>'pangzi', 'age'=>21]
  ];
  $perPage = 3;
  if ($request->has('page')) {
      $current_page = $request->input('page');
      $current_page = $current_page <= 0 ? 1 :$current_page;
  } else {
      $current_page = 1;
  }
  $item = array_slice($users, ($current_page-1)*$perPage, $perPage); //注釋1
  $total = count($users);
  $paginator =new LengthAwarePaginator($item, $total, $perPage, $currentPage, [
      'path' => Paginator::resolveCurrentPath(), //注釋2
      'pageName' => 'page',
  ]);
  $userlist = $paginator->toArray()['data'];
  return view('userlist', compact('userlist', 'paginator'));
}

---來自百度

2018年4月30日 15:56