Laravelでページネーションを作成する【fakerでSeeder作成】

Fakerでダミーデータを生成する

Factoryの生成

database/factories/UserFactory.php
にサンプルが置かれているので参考にする。

Employeeモデルを使ってEmployeeFactoryを生成する例。
php artisan make:factory EmployeeFactory --model=Employee

Seeder作成

テストデータ生成用Seederを用意する。
php artisan make:seeder EmployeesTestTableSeeder

paginationを生成する

paginate用のデータ取得

今回はリポジトリパターンを適用するライブラリ(l5-repository)を用いてpaginate用のデータを取得する。
$employees = $this->repository->paginate($limit = null, $columns = ['*']);

デフォルトのLaravelの場合下記のようにして取得できる
$users = DB::table('users')->paginate(15);

ページネーション生成

ページネーションのblade変更

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

resources/views/vendor/pagination/
にデフォルトのページネーション用bladeが配置される。

デフォルトではbootstrap-4.blade.phpが利用される。

【参考】
Illuminate\Pagination\AbstractPaginator

public static $defaultView = 'pagination::bootstrap-4';

変更する方法は2つ

  1. app/Providers/AppServiceProvider.phpでdefaultViewを定義する
  2. 生成時にlinks(‘view’)とする

1. app/Providers/AppServiceProvider.phpでdefaultViewを定義する

views/vendor/pagination/mypagination.blade.phpを作成した後に下記を編集

app/Providers/AppServiceProvider.php

public function boot()
{
    Paginator::defaultView('vendor.pagination.mypagination');
}

2. 生成時にlinks(‘view’)とする

views/vendor/pagination/mypagination.blade.phpを使用する場合の
$user->links('vendor.pagination.original')
でOK

今回は毎回linksで指定するのが面倒そうだと感じたので1の方法を採用しました。

memo

配列からランダムで値を一つセットするには
$faker->randomElement(['a', 'b', 'C']) を用いればいい
( 参考: Faker\Provider\Base

Fakcerで生成するデータを日本語にする

config/app.php

    'faker_locale' => 'ja_JP',

【参考URL】