# Laravel Lumen Faker 日本語設定

テストや Seeder でダミデータを生成する場合がよくありますが、Factory Faker を利用して、ダミデータを生成できます。
Laravel と Lumen は設定同じです。

DatabaseServiceProvider の設定を確認
Illuminate/Database/DatabaseServiceProvider.php









 











   /**
     * Register the Eloquent factory instance in the container.
     *
     * @return void
     */
    protected function registerEloquentFactory()
    {
        $this->app->singleton(FakerGenerator::class, function ($app, $parameters) {
            $locale = $parameters['locale'] ?? $app['config']->get('app.faker_locale', 'en_US');

            if (! isset(static::$fakers[$locale])) {
                static::$fakers[$locale] = FakerFactory::create($locale);
            }

            static::$fakers[$locale]->unique(true);

            return static::$fakers[$locale];
        });
    }

デフォルトは en_US 英語になっていますが、config/app.php に faker_locale 設定すれば完成です。

config/app.php

<?php

return [
    'faker_locale' => 'ja_JP',
];

laravel ではない場合は初期設定する必要があります。

$faker = Faker\Factory::create('ja_JP');

# Laravel Lumen Factory Faker 設定

よく使う user テーブルのダミデータ作成

database/factories/UserFactory.php

<?php

namespace Database\Factories;

use App\Models\User;
use Faker;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = User::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'name' => $this->faker->name,
            'email' => $this->faker->unique()->safeEmail(),
            'password' => password_hash('pass', PASSWORD_DEFAULT),
            'postal' => $this->faker->postcode,
            'address' => $this->faker->address,
            'tel' => $this->faker->phoneNumber,
            'birthday' => $this->faker->dateTimeBetween($startDate = '-10 years', $endDate = 'now')->format('Y-m-d'),
        ];
    }
}

config/app.php にすでに日本語化を設定済みのため、出力したデータが日本語になります。

# Faker の使い方

# Person 名前設定

氏名、男性女性の氏名、姓と名別出力できます。

$faker->name($gender = null|'male'|'female')      // 氏名 性別指定できる

$faker->firstName($gender = null|'male'|'female') // 姓 性別指定できる
$faker->lastName()                                // '名'

$faker->firstNameMale()                           // '男性姓'
$faker->firstNameFemale()                         // '女性姓'

# Address 住所

住所を細かく出力することができます。

$faker->secondaryAddress()                 // 'Suite 961'
$faker->state()                            // 'NewMexico'
$faker->buildingNumber()                   // '484'
$faker->city()                             // 'West Judge'
$faker->streetName()                       // 'Keegan Trail'
$faker->streetAddress()                    // '439 Karley Loaf Suite 897'

$faker->postcode()                         // 郵便番号
$faker->address()                          // 郵便番号ありの住所 '3924071  山口県津田市北区坂本町吉田9-4-7'

$faker->latitude($min = -90, $max = 90)    // 緯度
$faker->longitude($min = -180, $max = 180) // 経度

# Date Time 日付&時間

$faker->date();
// '1999-06-09'

$faker->date('Y_m_d');
// '2011_02_19'

$faker->time();
// '12:02:50'

$faker->time('H_i_s');
// '20_49_12'

# creditCardNumber クレジットカード情報

$faker->creditCardNumber();
// '4556817762319090', '5151791946409422'

$faker->creditCardType();
// 'MasterCard', 'Visa'

$faker->creditCardNumber('Visa');
// '4539710900519030', '4929494068680706'

$faker->creditCardNumber('Visa', true);
// '4624-6303-5483-5433', '4916-3711-2654-8734'

$faker->creditCardNumber('Visa', true, '::');
// '4539::6626::9844::3867', '4916::6161::0683::7022'

# その他項目

// UUID
$faker->uuid();

// Password パスワード
$faker->password();

// Email メールアドレス
$faker->safeEmail();    // exampleメールアドレス
$faker->email();        // 使われる可能性のあるメールアドレス

// PhoneNumber 電話番号
$faker->phoneNumber()

// Company 会社名
$faker->company()

// Domain ドメイン
$faker->domainName();

// URL
$faker->url();

// IP4
$faker->ipv4();

// Local IP
$faker->localIpv4();

// IPV6
$faker->ipv6();

// MacAddress
$faker->macAddress();

// 文字列
$faker->realText($maxNbChars = 200, $indexSize = 2)
// "And yet I wish you could manage it?) 'And what are they made of?' Alice asked in a shrill, passionate voice. 'Would YOU like cats if you were never even spoke to Time!' 'Perhaps not,' Alice replied."
$faker->realTextBetween($minNbChars = 160, $maxNbChars = 200, $indexSize = 2)
// "VERY short remarks, and she ran across the garden, and I had not long to doubt, for the end of the bottle was NOT marked 'poison,' it is right?' 'In my youth,' Father William replied to his ear."

# Laravel Lumen 以外で Faker 使う

Faker requires PHP >= 7.1.

composer require fakerphp/faker
// composer autoload
require_once 'vendor/autoload.php';

// Fakerのみ読み込み
require_once '/path/to/Faker/src/autoload.php';

初期化設定

$faker = Faker\Factory::create('ja_JP');

# Laravel Lumen seeder

users テーブルのマイグレーション

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('email')->unique();
            $table->string('password');
            $table->string('name');
            $table->string('postal');
            $table->text('address');
            $table->string('tel');
            $table->date('birthday')->default(null);
            $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
            $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP'));
        });
    }

seeder ファイル

database/seeders/UsersTableSeeder.php

<?php

namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        User::factory()->count(10)->create();
    }
}

php artisan コマンド

php artisan db:seed --class=UsersTableSeeder

これで users テーブルに 10 行のダミデータ挿入できました。

2022-02-08
  • laravel
レンタルサーバー エックスサーバー レンタルサーバー エックスサーバー DMM fx DMM fx 開発/運用エンジニア募集プログラム 開発/運用エンジニア募集プログラム 外為ジャパンFX 新規口座開設促進 外為ジャパンFX 新規口座開設促進 eBay公式ショッピングサイト Qoo10 eBay公式ショッピングサイト Qoo10 Amazon.co.jpのカテゴリごとのページ

関連記事

Laravel Sail で Docker 環境構築
laravel method の基本 get post put options
Laravel schedule 設定
Laravel eloquent model の規約
Laravel timestamp() auto update 有効化無効化
Laravel toSql パラメータ付きで出力
Laravel blade foreach loop と current url
laravel session を制する
Laravel 5.1 から 8.1 にバージョンアップ
Lumen と Laravel 違い比較
Laravel Error についてのメモ
laravel に vuejs 使うための初期設定