[Laravel]Fakerでテストデータ生成

Laravel Laravel

この記事はLaravelにてFakerを利用して、テストデータやSeederでダミーデータを作成する方法を解説します。

Fakerでダミーデータ作成

まずはFakerを利用してみるためにルーティングファイル(/routes/web.php)に以下のコードを記述しましょう。

既存のルーティングの「/」はコメントアウトするなりして無効または削除してください。

/routes/web.php
Route::get('/', function () {
    $faker = Faker\Factory::create('ja_JP');
    $dummyData = [
        'name' => $faker->name,
        'password' => $faker->password,
        'country' => $faker->country,
        'prefecture' => $faker->prefecture,
        'city' => $faker->city,
        'postcode' => $faker->postcode,
        'address' => $faker->address,
        'streetAddress' => $faker->streetAddress,
        'phoneNumber' => $faker->phoneNumber,
        'email' => $faker->email,
        'safeEmail' => $faker->safeEmail,
        'company' => $faker->company,
        'iso8601' => $faker->iso8601($max = 'now'),
        'dateTimeBetween' => $faker->dateTimeBetween($startDate = '-110 years', $endDate = 'now')->format('Y年m月d日'),
        'numberBetween' => $faker->numberBetween($min = 100, $max = 200),
        'title' => $faker->title,
        'realText' => $faker->realText($maxNbChars = 50, $indexSize = 2),
        'randomNumber' => $faker->randomNumber($nbDigits = 5),
        'randomFloat' => $faker->randomFloat($nbMaxDecimals = 4, $min = 0, $max = 5),
        'randomElement' => $faker->randomElement($array = ['男性', '女性']),
        'lexify' => $faker->lexify($string = '??????'),
        'hexcolor' => $faker->hexcolor,
        'ipv4' => $faker->ipv4,
        'url' => $faker->url,
        'imageUrl' => $faker->imageUrl($width = 640, $height = 480, $category = 'cats', $randomize = true, $word = null),
        'userAgent' => $faker->userAgent,
        'creditCardType' => $faker->creditCardType,
        'creditCardNumber' => $faker->creditCardNumber,
        'creditCardExpirationDate' => $faker->creditCardExpirationDate,
        'isbn13' => $faker->isbn13,
        'isbn10' => $faker->isbn10
    ];
    dd($dummyData);
    exit();
});
PHP

http://localhost/にアクセスして結果を見てみると以下のような結果となると思います。
(実行するたびに結果が異なるため、完全に同一とはなりません。)

PHP
array:31 [// routes/web.php:59
  "name" => "桐山 充"
  "password" => ",f"=}c(RIi"
  "country" => "スーダン"
  "prefecture" => "東京都"
  "city" => "木村市"
  "postcode" => "1023581"
  "address" => "8771440  福島県藤本市南区田中町中島6-3-2 ハイツ廣川104号"
  "streetAddress" => "村山町青田8-2-5"
  "phoneNumber" => "0560-042-611"
  "email" => "dtanabe@miyazawa.jp"
  "safeEmail" => "kumiko.kobayashi@example.com"
  "company" => "株式会社 桐山"
  "iso8601" => "1973-01-02T09:58:24+0000"
  "dateTimeBetween" => "1945年05月13日"
  "numberBetween" => 181
  "title" => "Prof."
  "realText" => "着きて赤い帽子ぼうえんしつに、縮ちぢめていました。ジョバンニもカムパネルラなんだからも出て来るので。"
  "randomNumber" => 59487
  "randomFloat" => 1.6906
  "randomElement" => "女性"
  "lexify" => "wqljmn"
  "hexcolor" => "#03a4f8"
  "ipv4" => "97.20.24.75"
  "url" => "https://nakamura.com/aut-aut-quibusdam-vero-quod-consequatur.html"
  "imageUrl" => "https://via.placeholder.com/640x480.png/00ddcc?text=cats+assumenda"
  "userAgent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 7_2_2 like Mac OS X; en-US) AppleWebKit/531.24.5 (KHTML, like Gecko) Version/4.0.5 Mobile/8B119 Safari/6531.24.5"
  "creditCardType" => "Visa"
  "creditCardNumber" => "5374902910899669"
  "creditCardExpirationDate" => DateTime @1710617757 {#315 ▶
    date: 2024-03-16 19:35:57.0 UTC (+00:00)
  }
  "isbn13" => "9790715915096"
  "isbn10" => "804940191X"
]
PHP

もっと詳しい情報は公式GitHubページ(英語)を参照してみてください。

また、[Laravel]Fakerのチートシートにメソッドをまとめているので、こちらも参考にしてください。

最後に

Fakerを利用してダミーデータを簡単に作成できるので、大量のデータを作成したりするのも簡単になります。

これを利用してFactoryを作成すれば、もっとスッキリしたコードになると思います。

コメント

タイトルとURLをコピーしました