Laravel5.5でページネーションを実装する

Laravel
スポンサーリンク

本記事は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
Laravel
スポンサーリンク
エンジニアの日記

コメント