7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have 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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?