[Laravel] Fakerを使って、従業員テーブルに日本語の氏名、住所などのテストデータを投入する

2020年2月11日ITLaravel, PHP

LaravelでFakerを使って、従業員テーブルに日本語の氏名、住所などのテストデータを入れてみました。

Faker とは?

Fakerはテストデータを生成できるPHPライブラリです。

公式サイト:https://github.com/fzaninotto/Faker

Fakerの日本語対応

LaravelでFakerを日本語にするには、app.php 内の faker_locale を修正します。

/config/app.php

'faker_locale' => 'ja_JP',

マイグレーションファイル(create_employees_table)作成

php artisan make:migration create_employees_table

/database/migrations/2020_XX_XX_XXXX_create_employees_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateEmployeesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('employees', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('first_name');
            $table->string('last_name');
            $table->string('first_name_kana');
            $table->string('last_name_kana');
            $table->string('division');
            $table->string('postcode');
            $table->string('address');
            $table->string('phone_number');
            $table->string('email');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('employees');
    }
}

シーダーファイル(EmployeesTableSeeder)作成

php artisan make:seeder EmployeesTableSeeder

/database/seeds/EmployeesTableSeeder.php

<?php

use Illuminate\Database\Seeder;
use \Illuminate\Support\Facades\DB;

class EmployeesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('employees')->truncate();

        factory(App\Employee::class, 10)->create();

    }
}

※データを入れる前にtruncateをして、seederを実行する前にemployeesテーブル内の列をすべて削除してます。

※従業員10名分作成します。

ファクトリーファイル(EmployeesFactory)作成

php artisan make:factory EmployeesFactory

/database/factories/EmployeeFactory.php

<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Employee;
use Faker\Generator as Faker;

$factory->define(Employee::class, function (Faker $faker) {

    $divisions = ['営業部', '人事部', 'IT事業部', 'カスタマーサクセス部', '広報部'];

    return [
        'first_name' => $faker->firstName,
        'last_name' => $faker->lastName,
        'first_name_kana' => $faker->firstKanaName,
        'last_name_kana' => $faker->lastKanaName,
        'division' => $faker->randomElement($divisions),
        'postcode' => $faker->postcode,
        'address' => substr($faker->address, 9),
        'phone_number' => $faker->phoneNumber,
        'email' => $faker->email,
    ];
});

※部署にあたるであろう $faker->bs がフォーマットエラーになったので、部署はこちらでいくつか用意し、ランダムに入れています。

※$faker->address の結果が「7811067 兵庫県大垣市南区工藤町杉山8-10-10 ハイツ渚110号」と、郵便番号まで入るので郵便番号は取り除いています。

出力結果

シーダーファイル実行をします。

php artisan db:seed --class=EmployeesTableSeeder
mysql> select * from employees;
+----+------------+-----------+-----------------+-----------------+--------------------------------+----------+------------------------------------------------------------------------+---------------+--------------------------------+---------------------+---------------------+
| id | first_name | last_name | first_name_kana | last_name_kana  | division                       | postcode | address                                                                | phone_number  | email                          | created_at          | updated_at          |
+----+------------+-----------+-----------------+-----------------+--------------------------------+----------+------------------------------------------------------------------------+---------------+--------------------------------+---------------------+---------------------+
|  1 | 明美       | 斉藤      | ヒロシ          | ナカツガワ      | 人事部                         | 4793805  | 静岡県吉田市中央区高橋町原田5-1-7                                      | 080-5397-5137 | kaori26@kobayashi.jp           | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
|  2 | 桃子       | 野村      | カオリ          | ササキ          | カスタマーサクセス部           | 6145397  | 兵庫県伊藤市西区廣川町青田5-8-5                                        | 077-967-4692  | kana.suzuki@miyake.org         | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
|  3 | 美加子     | 青田      | リョウヘイ      | ワタナベ        | IT事業部                       | 8601030  | 福井県井上市中央区佐藤町藤本9-8-9                                      | 0120-321-426  | knomura@hotmail.co.jp          | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
|  4 | 聡太郎     | 桐山      | アケミ          | イダカ          | 営業部                         | 2499807  | 静岡県田辺市北区西之園町大垣8-6-5 コーポ加藤104号                      | 0041-73-1143  | vnagisa@kato.jp                | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
|  5 | 桃子       | 井高      | ミカコ          | ハマダ          | カスタマーサクセス部           | 5738050  | 沖縄県鈴木市南区藤本町西之園1-6-10 ハイツ坂本103号                     | 071-187-2831  | rei.nakatsugawa@mail.goo.ne.jp | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
|  6 | 充         | 青山      | カナ            | タカハシ        | カスタマーサクセス部           | 7947237  | 宮崎県加納市中央区山岸町村山10-4-1                                     | 08331-2-7440  | momoko68@hamada.com            | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
|  7 | 知実       | 小泉      | ミツル          | イダカ          | IT事業部                       | 4132596  | 高知県江古田市南区小泉町加藤9-7-3                                      | 080-8602-2631 | ogaki.youichi@tsuda.com        | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
|  8 | 香織       | 伊藤      | タクマ          | カノウ          | 営業部                         | 6166272  | 高知県田中市中央区田辺町喜嶋4-8-1                                      | 0833-43-6260  | yoko75@yahoo.co.jp             | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
|  9 | 花子       | 山岸      | ユミコ          | ウノ            | IT事業部                       | 9693189  | 熊本県宇野市東区近藤町小林2-3-6                                        | 080-1998-3734 | hamada.taichi@hamada.jp        | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
| 10 | 千代       | 佐藤      | カオリ          | ワカマツ        | 営業部                         | 3441126  | 新潟県杉山市東区原田町青田7-3-5                                        | 080-7802-8920 | nakamura.hideki@ogaki.com      | 2020-02-11 04:51:05 | 2020-02-11 04:51:05 |
+----+------------+-----------+-----------------+-----------------+--------------------------------+----------+------------------------------------------------------------------------+---------------+--------------------------------+---------------------+---------------------+

※名前とカナ、郵便番号と住所が不一致になります。あくまでテストデータなのでいいかと思いますが、正確でないといけない場合は別の手段を検討されたほうがいいと思います。

テストデータを用意するのはアプリの開発をしてたら、何かとめんどうに感じますが、Fakerを使えば、楽ができるのではないかと思います。

以上になります。

こちらにFakerを日本語で使ったら、どんな出力結果になるのか、まとめてます。

よろしければどうぞ。

ここまでお読みいただきありがとうございました。

スポンサーリンク

Posted by nobuhiro harada