本記事はLaravelを使ったページネーションの実装方法をまとめています。
例としてユーザ一覧ページを作成し、そこにページネーションを組み込みでいきます。
それでは早速作っていきましょう!
モデル
特に何もしなくて結構です。
Laravelが用意してくださっているUserモデルをそのまま利用します。
コントローラー
以下のコマンドでコントローラーを生成してください。
$ php artisan make:controller UsersController --resource
–resourceを付けて実行すると、indexやshowなどの7つのアクションが入った形で作られます
その上でindexメソッドの中身を以下のように書き換えてください。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\User; class UsersController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $users = User::paginate(10); return view('users.index', [ 'users' => $users, ]); } (省略)
ページネーションを構成するのに必要な値は、paginateメソッドの返り値で取得できます。
paginateメソッドはIlluminate\Database\Eloquent\Builderで定義されています。
返り値をddコマンドで中身を確認してみると、
#total: 5 #lastPage: 2 #items: Collection {#212 ▶} #perPage: 3 #currentPage: 1 #path: "{パス情報}" #query: [] #fragment: null #pageName: "page"
perPage,total,currentPageなどの値が返ってきております。
ちなみにperPageはpaginateの引数として渡している値になりまして、1ページに表示する件数を指しています。
あと忘れずにuse App\User;しておてください。
ビュー
続いてViewを作成します。
resource/views配下にusersフォルダを作成してください。
その中にindex.blade.phpを作成し、以下のソースコードを貼り付けてください。
@extends('layouts.app')
@section('content')
<div class="text-center">
<ul class="list-unstyled">
@foreach ($users as $user)
<li>
{{ $user->id }}
{{ $user->name }}
</li>
@endforeach
</ul>
{{ $users->links() }}
</div>
@endsection
ルーティング
最後にルーティングの設定になります。
routes/web.phpに以下のソースを加えてください。
Route::resource('users', 'UsersController', ['only' => ['index']]);
動作確認
作業は以上になりますので、ブラウザで確認していきましょう!!
https://{ホスト名}/users にアクセスしてください

以下のような画面が表示されていればOKです。
参考文献
データベース:ペジネーション 5.5 Laravel