LoginSignup
0
0

More than 1 year has passed since last update.

【Laravel】大量のダミーデータ作成/ページネーション

Posted at

factoryの中でfackerを使用し、大量のダミーデータが作成できる。

公式アニュアル

Factoryファイル作成

php artisan make:factory ContactFormFactory

ファイルが自動生成される
image.png

ダミーデータの日本語設定

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件が自動生成

image.png

ページネーション

ページ毎にデータ〇件と表示指定できる

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() }}

ページ毎に表示される
image.png

↓ここを日本語対応
image.png

公式マニュアル

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

resources/views/venderが自動生成
image.png

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>

image.png

0
0
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
0
0