ふんばりフロントエンジニアのブログ

新米フロントエンジニアのふんばっている日々と備忘録です。

LaravelでFactoryとSeederを使ってダミーデータを追加する簡単な例

タイトルの通りです。

備忘録的に簡単なFactoryとSeederを使用したダミーデータの追加例を残しておきます。

FactoryとSeederとは

Factoryは追加するダミーデータの型みたいなものを定義するところです。
その名の通り、人形焼の鋳型を生産する工場的なものだと思っておきましょう。

Seederは実際にデータベースにダミーデータを追加するところです。
Factoryを使わなくてもSeederだけでダミーデータを追加することもできるみたいですね。

FactoryとSeederを使ったダミーデータ追加の簡単な例

全体的な流れ
  1. Factoryでデータモデルの定義

Seederで実際にデータの追加処理を定義
Seederを実行

手順

1. SeederとFactoryのファイルを作る。

php artisan make:seeder OrdersTableSeeder
php artisan make:factory OrdersFatctory --model=Orders 

Factoryを作る際は上記のようにmodelを指定することをおすすめします。

2. Factoryでデータのモデルを作る。

$factory->define(Orders::class, function (Faker $faker) {
    $drink = ['ビール','ハイボール','チューハイ'];

    return [
        'user_id' => $faker->numberBetween(3, 4),
        'drink' => $faker->randomElement($drink)
    ];
});

defineの第一引数がしっかり先頭が大文字になるモデル名の指定になっているか確認。
ちゃんとした指定になっていないと「Unable to locate factory with name [default]」のエラーが出る。
$fakerはダミーデータ作成をするために使うライブラリ。別に使わないでベタ書きでもいい。
$fakerで使えるデータ一覧↓
qiita.com


3. Seederでデータの作成

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

factoryメソッドの第一引数にモデルクラス、第二引数にデータの数を入れるだけ。

4. DatabaseSeeder.phpにSeederの登録

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

artisanのdb::seedコマンドで実行されるのがこのファイルのよう。
「--class=[seeder名]」で実行seederを指定できた時代もあったが現在はできなさそう。

5. Seederを実行

php artisan db::seed


簡単な例ではありましたが、なんとなく流れがわかってもらえたら嬉しいです。