面倒なテストデータ作成とはもうおさらば。データ挿入なら「ModelFactory」

Laravelの使ったことがない機能を使っていく企画「Laravelを知る」.

第1弾は,ModelFactoryです.

SPONSORED LINK

ModelFactoryとは

Eloquentのモデルを使ってテストデータを作るための機能です.

ぼくも半年ほどLaravelを使っていたのですが,RailsのFactoryBotを知るまではこの機能を知りませんでした.こんなに便利なのに…

Laravelでテストを作るときとか,ダミーデータを作るときに便利ですね.

ユーザを作成してみる

プロジェクトを作成した時点で database/factories/UserFactory.php が生成されているので,今回はそれを使います.

今回は,nameemail はランダムで,passwordsecret のユーザが作成されます.

ちなみに,fakerはダミーデータを生成するためのツールです.

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];
});

このFactoryをSeederで使います.

繰り返す回数を設定すれば,一気に複数のデータを挿入できます.

database/seeds/UsersTableSeeder.php

public function run()
{
    factory(\App\User::class, 5)->create();
}

database/seeds/DatabaseSeeder.php

public function run()
{
    $this->call(UsersTableSeeder::class);
}

最後に,php artisan db:seed を打てば,5人のユーザが作成されます.

SPONSORED LINK

いろいろできます

今回はユーザを作成しただけでしたが,リレーションを設定したデータを挿入したり,特定の値を持ったレコードを名前付きで管理したりできます.

まだまだ勉強途中ですが,これから使い込んでいきたいと思います.


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です