LoginSignup
7
8

More than 1 year has passed since last update.

Laravel8でページネーションを作る

Last updated at Posted at 2021-09-25

はじめに

 ページネーションとは、ECサイトの商品件数や掲示板のコメントなど件数が多い場合に、一気に表示させるのではなく、ページ遷移を行うことで数件〜数十件ずつ取得していく手法のことです。

 Laravelでは簡単にページネーションを実装することができます。

paginateメソッド

 paginateメソッドを使うことで、1ページに表示したい件数を取得することができます。

・Eloquentを使用する場合

controller.php
 $products = Product::paginate(15);

・クエリビルダを使用する場合

controller.php
 $products = DB::table('products')->paginate(15);

これで15件ずつデータを取得することができます。

viewファイルにリンクを記載

 次に、viewファイルにリンクを記載します。

view.blade.php
@foreach($products as $product)
    <p>{{ $product->name }}</p>
@endforeach

{{ $products->links() }}

これでリンクが出来上がりました!

ページネーション用ファイルの設置

 まずは下記のコマンド入力をしてください。

php artisan vendor:publish --tag=laravel-pagination

これで、resources/views/vendor/paginationディレクトリの中にページネーション用ファイルが作成されます。

Bootstrapの設定

 Laravel8ではTailwindがデフォルトの設定になっているので、この時点ではデザインが崩れています。解消するには設定をBootstrapに変える必要があります。

app\Providers\AppServiceProvider.phpをこのように編集してください。

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();
    }
}

Illuminate\Pagination\Paginatorをuseして、boot()の中身でPaginator::useBootstrap();とします。

これでBootstrapが適用されて綺麗に表示されるようになります!

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8