Laravelをしようしていてページネーションを実装する機会というのは多いと思います。
今回の記事では、Laravel8をしようした際のページネーションの実装方法について紹介します。
コントローラーの実装
まず次のようにコントローラーを作成します。今回は、Usersテーブルの情報を5件づつページングする処理を作成します。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; class UserController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $data = User::paginate(5); return view('users',compact('data')); } }
bladeの実装
次にbladeの作成します。今回の例では下記のように作成しました。
<!DOCTYPE html> <html> <head> <title>Laravel 8 CRUD Application - ItSolutionStuff.com</title> <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css" rel="stylesheet"> </head> <body> <div class="container"> <h1>Laravel 8 Pagination Example - ItSolutionStuff.com</h1> <table class="table table-bordered"> <thead> <tr> <th>Name</th> <th width="300px;">Action</th> </tr> </thead> <tbody> @if(!empty($data) && $data->count()) @foreach($data as $key => $value) <tr> <td>{{ $value->name }}</td> <td> <button class="btn btn-danger">Delete</button> </td> </tr> @endforeach @else <tr> <td colspan="10">There are no data.</td> </tr> @endif </tbody> </table> {!! $data->links() !!} </div> </body> </html>
bladeに受け渡された変数を
{!! $data->links() !!}
とすることでページングのリンクが作成されます。
おそらく、少なくともLaravel5.3以上はこのやり方でページングの処理が実装できるはずです。
他のCSSの表示を変更したい場合は、下記のartisanコマンドを打ってください。
php artisan vendor:publish --tag=laravel-pagination
resources/views/vendor/paginationができます。
そのなかにpagination用のファイルが入っています。
Bootstrapのデザインを適用したい場合(Laravel8)
Bootstrapを使用している場合、以下のようにServiceProviderにuseBootstrap()を追加すると実装できます。
app\Providers\AppServiceProvider.php
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; // ↓これを忘れないように use Illuminate\Pagination\Paginator; class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { } /** * Bootstrap any application services. * * @return void */ public function boot() { //↓追加 Paginator::useBootstrap(); } }
まとめ
今回の記事では、Laravelを用いたページングの処理について紹介しました。Laravelを用いてページングの処理を実装する際には参考にしてみてください。