Laravelでページネーションを実装する方法

Published:

Bladeの時

PHP

public function index()
{
    $users = App\User::paginate(15);
    return view('user.index', ['users' => $users]);
}

blade

{{ $users->appends(['sort' => 'votes'])->links() }}

PHP側でpaginate()した変数をBladeに渡してあげて、appends()で条件を設定、links()でアドレスを取得できます。

APIの時

PHP

public function index()
{
    $users = App\User::paginate(15)->appends(['sort' => 'votes']);
    return $users;
}

出力

{
  "first_page_url": "http://exsample.com/users?sort=votes&page=1",
  "last_page_url": "http://exsample.com/users?sort=votes&page=10",
  "next_page_url": "http://exsample.com/users?sort=votes&page=3",
}

Bladeの時と同様にpaginate()した後に、続けてappends()で条件を設定すると、JSONに自動的に、最初のページ、次のページ、最後のページのリンクが付与されます。