LaravelでFactoryとSeederを使ってダミーデータを追加する簡単な例
タイトルの通りです。
備忘録的に簡単なFactoryとSeederを使用したダミーデータの追加例を残しておきます。
FactoryとSeederとは
Factoryは追加するダミーデータの型みたいなものを定義するところです。
その名の通り、人形焼の鋳型を生産する工場的なものだと思っておきましょう。
Seederは実際にデータベースにダミーデータを追加するところです。
Factoryを使わなくてもSeederだけでダミーデータを追加することもできるみたいですね。
FactoryとSeederを使ったダミーデータ追加の簡単な例
全体的な流れ
- 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
簡単な例ではありましたが、なんとなく流れがわかってもらえたら嬉しいです。