factoryの中でfackerを使用し、大量のダミーデータが作成できる。
公式アニュアル
Factoryファイル作成
php artisan make:factory ContactFormFactory
ダミーデータの日本語設定
config/app.pnp
// 変更前
'faker_locale' => 'en_US',
//変更後
'faker_locale' => 'ja_JP',
実装
参考記事
database/factories/ContactFormFactory.php
class ContactFormFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition()
{
return [
//追記(古い)
'name' => $this->faker->name(20),
'title' => $this->faker->realText(50),
'email' => $this->faker->email(),
'url' => $this->faker->url(),
'gender' => $this->faker->boolean(),
'age' => $this->faker->numberBetween(1, 6),
'contact' => $this->faker->realText(200),
];
}
}
database/seeders/DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
public function run()
{
// 欲しい件数(100)
\App\Models\ContactForm::factory(100)->create();
}
}
php artisan migrate:fresh --seed
欲しいデータ100件が自動生成
ページネーション
ページ毎にデータ〇件と表示指定できる
Http/Controllers/ContactFormController.php
public function index()
{
// 追記 表示したい件数(30)
$contacts = ContactForm::select('id', 'name', 'title', 'created_at')
->paginate(30);
}}
表示するファイル
resources/views/contacts/index.blade.php
{{ $contacts->links() }}
公式マニュアル
php artisan vendor:publish --tag=laravel-pagination
resources/views/vender/tailwind.blade.php
// 変更前
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
<div>
<p class="text-sm text-gray-700 leading-5">
{!! __('Showing') !!}
@if ($paginator->firstItem())
<span class="font-medium">{{ $paginator->firstItem() }}</span>
{!! __('to') !!}
<span class="font-medium">{{ $paginator->lastItem() }}</span>
@else
{{ $paginator->count() }}
@endif
{!! __('of') !!}
<span class="font-medium">{{ $paginator->total() }}</span>
{!! __('results') !!}
</p>
</div>
// 変更後
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
<div>
<p class="text-sm text-gray-700 leading-5">
<span class="font-medium">{{ $paginator->total() }}</span>
件中
@if ($paginator->firstItem())
<span class="font-medium">{{ $paginator->firstItem() }}</span>
~
<span class="font-medium">{{ $paginator->lastItem() }}</span>
@else
{{ $paginator->count() }}
@endif
件表示
</p>
</div>