laravelのfactory(Seederにダミーレコード処理を書かずに、各モデル毎にレコード生成処理を分離する仕組み)について調べてみた

laravelのfactory(Seederにダミーレコード処理を書かずに、各モデル毎にレコード生成処理を分離する仕組み)について調べてみた

参考URL
https://qiita.com/fagai/items/7f63d651cbed3664b758

laravelのfactoryとは、テスト用ダミーデータを作る仕組み。内部的にはFakerを使っている。
seeds/DatabaseSeeder.phpに直接ロジックを書かずに、database/factories/各モデルFactory.phpに分離しよう!という思想。
確かに、沢山のダミーデータ処理がSeederにあるとゴチャゴチャになるからな~。

laravel5.1のseed(テーブルの初期レコード設定)をFaker(テストデータ自動生成ライブラリ)で作ってみる

1, config/app.phpで言語指定

2, modelを作る時に一緒にfactoryも作る(–allでMVCF全部作ってもOK)

3, Userのfactoryは最初から存在している。
database/factories/UserFactory.php

4, 一番単純なFactoryの使い方。
seeds/DatabaseSeeder.phpで、モデル名と作りたい個数を指定すると、シーディング(php artisan migrate:fresh –seed)で生成される。

5, リレーション(1対N)を含んだfactory
1ユーザレコードを生成して、同時に1投稿レコードも生成する

6, 1ユーザレコード生成に対して、複数の投稿レコードを生成する

Postレコードの親ユーザはNULLに変更。Userはそのまま

seeds/DatabaseSeeder.phpで、ユーザを先に生成して、それから各ユーザ毎に投稿を3つずつ作る。

User.phpのリレーション設定を忘れずに!

いままでは、SeederでリレーションID=1みたいに、決め打ちで書いてたけど、こっちの方がスマートだな。