如果要在 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 分頁