
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')とする
app/Providers/AppServiceProvider.php
でdefaultViewを定義する
1. 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】
- データベース:ペジネーション 5.7 Laravel
- データベースのテスト 5.7 Laravel
- Unable to locate factory with name [default]??
デフォルトでは\Tests\Integration\App\User
を見に行くために、\App
という風にしてやることがポイント