はじめに#
ページネーションとは、ECサイトの商品件数や掲示板のコメントなど件数が多い場合に、一気に表示させるのではなく、ページ遷移を行うことで数件〜数十件ずつ取得していく手法のことです。
Laravelでは簡単にページネーションを実装することができます。
paginateメソッド#
paginateメソッドを使うことで、1ページに表示したい件数を取得することができます。
・Eloquentを使用する場合
$products = Product::paginate(15);
・クエリビルダを使用する場合
$products = DB::table('products')->paginate(15);
これで15件ずつデータを取得することができます。
viewファイルにリンクを記載#
次に、viewファイルにリンクを記載します。
@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をこのように編集してください。
<?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が適用されて綺麗に表示されるようになります!