如果要在 Laravel 對資料庫的資料做分段撈出來,並套用在分頁上,Laravel 也提供了很方便的做法。
首先把透過 model 撈出來的資料使用 paginate(n) 就可以設定一頁要撈幾則資料,n 為一頁要幾則:
$users = User::paginate(15);
撈出來的資料也可以加上篩選條件:
$users = User::where('votes', '>', 100)->paginate(15);
這樣就可以透過 get 的 page 變數丟到 model 內,就完成分頁資料抓取的功能。
public function correct(Request $request) { $users=User::orderBy('id', 'desc')->paginate(15); $page = $request->input('page') ?? 1; return view('users',compact('users')); }
如果要自訂分頁 url 的話就像這樣:
$users->setPath('custom/url');
再將資料轉換為陣列,就可以依據設定的 key 值去取得分頁的 url
$page_data = $users->toArray();
HTML 部分:
<a href="{{$page_data['prev_page_url']}}">上一頁</a>
<a href="{{$page_data['next_page_url']}}">下一頁</a>
其他可以取得的資料:
{ "total": 50, "per_page": 15, "current_page": 1, "last_page": 4, "next_page_url": "http://laravel.app?page=2", "prev_page_url": null, "from": 1, "to": 15, "data":[ { // Result Object }, { // Result Object } ] }
參考:laravel 分頁