大量のダミーデータを作成する段取り
- Factoryファイルの作成
- 作成したFactoryファイルの中にFackerを使ってダミーデータをセットする
- DatabaseSeederで該当のFactoryを登録する
Factoryファイルの作成
php artisan make:facktory HogeFactory –model=Hoge
Fackerを使ってダミーデータをセットする
// ProductFactory
public function definition(): array
{
return [
'name' => fake()->name(),
'information' => fake()->realText(),
'price' => fake()->numberBetween(10, 100000),
'sortOrder' => fake()->randomNumber(),
'shopId' => fake()->numberBetween(1, 2),
'secondaryId' => fake()->numberBetween(1, 9),
'image1' => fake()->numberBetween(1, 9),
'image2' => fake()->numberBetween(1, 9),
'image3' => fake()->numberBetween(1, 9),
'image4' => fake()->numberBetween(1, 9),
'isSelling' => fake()->numberBetween(0, 1),
];
}
// StockFactory
public function definition(): array
{
return [
'productId' => Product::factory(), // ProductFactoryを生成し、生成したidを順にいれる
'type' => fake()->numberBetween(1, 2),
'quantity' => fake()->randomNumber(),
];
}
Fakerチートシートで必要なプロパティなどを見つけて設定する
DatabaseSeederで該当のFactoryを登録する
public function run(): void
{
$this->call([
// 省略
]);
// Product::factory(100)->create(); <-この行いらなそう。コメントアウトを外すとProductが200件作られる。理由はStockFactoryの方で'productId' => Product::factory()ですでに生成しているのだと思う。
Stock::factory(100)->create();
}
Fackerを日本語化するには
.envの APP_FAKER_LOCALE=ja_JP 設定をすること。
config/app.phpの方で参照される ’faker_locale’ => env(‘APP_FAKER_LOCALE’, ‘en_US’),
コメント