ハッピーメモメモ

私的備忘録

【Laravel】ダミーデータ作成

Faker

・ダミーデータ生成用のライブラリ

・主にモデルファクトリを定義する際に使用する

・Fakerはデフォルトでcomposer.jsonに指定されている

・seederにちょこっと書くだけで動いてくれる

[Laravel5.1]Fakerチートシート - Qiita

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class UsersTableSeeder extends Seeder
{
    public function run()
  {
        $faker = \Faker\Factory::create('ja_JP');
        for ($i = 0; $i < 10; $i++) {
            $param = [
            'name' => $faker->name(),
            'email' => $faker->email(),
            'password' => $faker->password(),
            ];
            DB::table('users')->insert($param);
        }
    }
}

 

 

Factory

①ターミナルで、factoryを生成するコマンドを実行

php artisan make:factory モデル名Factory

ex)UserモデルのFactoryを作る場合

  php artisan make:factory UserFactory

 

②Factoryの中身をかく

database>Factories>UserFactory.php

<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
use App\Models\User;

class UserFactory extends Factory
{
    public function definition()
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
            'remember_token' => Str::random(10),
        ];
    }
    public function unverified()
    {
        return $this->state(function (array $attributes) {
            return [
                'email_verified_at' => null,
            ];
        });
    }
}

 

③作成したseederをDatabaseSeeder.phpに登録

(UsersTableSeeder.phpに登録して、DatabaseSeeder.phpにUsersTableSeederの実行処理を記入しても同じように動いた)

database>seeders>DatabaseSeeder.php

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        \App\Models\User::factory(20)->create();
    }

}

 

④デフォルトでは英語のデータがでてきてしまうので、日本語化

config/app.php

    'fallback_locale' => 'en',

 

⑤ターミナルにて以下のコマンドを実行

 php artisan db:seed

 

zenn.dev