0
0

More than 3 years have passed since last update.

Laravel Factoryで範囲指定のあるダミーデータを作成

Posted at

いつからいつまでとか、◯◯のうちいずれか等、範囲指定のあるダミーデータを作成する。

Fakerを日本語化する

config/app.php
'faker_locale' => 'ja_JP', 

ダミーデータに日本語が含まれる場合はapp.phpのfaker_localeを日本語にする。

Factoryを作成する

% php artisan make:factory RecordFactory --model=Record

ファクトリを作成する。
モデルを指定しておけば、ファクトリファイルにuse App\Models\モデル名;が自動で書き足される。

ファクトリファイルを編集(Fakerを使用)

database/factories/RecordFactory.php
use App\Models\Record;
use Illuminate\Database\Eloquent\Factories\Factory;
.
.
.
    public function definition()
    {
        return [
            //
            'date' => $this->faker->dateTimeBetween($startDate = '-3 week', $endDate = 'now'), //追記
            'sum' => $this->faker->randomElement([180,150,120,90,60,30,15]), //追記
            'subject' => $this->faker->randomElement(['国語','数学','英語','国語,数学','国語,英語','国語,数学,英語','数学,英語']), //追記
            'user_id' => $this->faker->numberBetween(1,3), //追記
        ];
    }

数字の範囲指定はnumberBetween、日付の範囲指定はdateTimeBetween()、◯◯のうちいずれか、という選択はrandomElement([])を使用する。

DatabaseSeeder.phpを編集する

database/seeders/DatabaseSeeder.php
    public function run()
    {
        // \App\Models\User::factory(10)->create();
        //Recordモデルを使って15個のデータを登録する
        \App\Models\Record::factory(15)->create(); //←ここ追記
    }

php artisan db:seedを実行する。

% php artisan db:seed

これで範囲指定のあるダミーデータ作成ができる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0