LoginSignup
0
0

More than 3 years have passed since last update.

[Laravel] Fakerを使ってテストデータを作成してみる

Posted at

FakerとFactoryを使ってより現実に近いテストデータを用意してみます。

Fakerとは

より現実に近いテストデータを簡単に作成できるライブラリ。
作成できるダミーデータは主に次の通り。

項目名 出力データ
name 氏名
email メールアドレス
safeEmail メールアドレス
password パスワード
address 住所
phoneNumber 電話番号
company 企業名
realText テキスト

使い方。

// 初期化
$faker = Faker\Factory::create('ja_JP');
// データの取得
$faker->name
$faker->email

Fakerの生成するデータのロケールを変更したい場合、設定ファイルでも変更できます。
config/app.php に以下を追加します。

config/app.php
<?
return [
...
    'faker_locale' => 'ja_JP',
...
];

Factoryとは

大量のデータベースレコードを作成するのに便利。

モデルクラスを作成します。app配下にHoge.phpが作成される。

$ php artisan make:model Hoge

ファクトリークラスを作成します。database/factoriesフォルダにHogeFactory.phpが作成される。

$ php artisan make:factory HogeFactory

HogeFactory.phpを編集します。

database/factories/HogeFactory.php
<?php

use Faker\Generator as Faker;

$factory->define(App\Hoge::class, function (Faker $faker) {
    $now = \Carbon\Carbon::now();
    return [
        //
        'name' => $faker->name,
        'mail' => $faker->email,
        'comment' => $faker->realText,
        'created_at' => $now,
        'updated_at' => $now,
    ];
});

HogesTableSeeder.phpを編集します。

database/seeds/HogesTableSeeder.php
<?php
use Illuminate\Database\Seeder;

class HogesTableSeeder extends Seeder
{
    public function run ()
    {
        // 50レコード作成する
        factory (\App\Hoge::class, 50)->create();
    }
}

DatabaseSeeder.phpを編集します。

database/seeds/DatabaseSeeder.php
<?php
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    public function run ()
    {
        $this->call(HogesTableSeeder::class);
    }
}

実行します。

$ php artisan db:seed
testapp_db=# select * from hoges LIMIT 1;
 id |    name     |            mail            |                                                                                                                                                                                                     comment                                                                                                                                                                                                      | type |     created_at      |     updated_at
----+-------------+----------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+---------------------+---------------------
 51 | 青田 裕美子 | sayuri.yamaguchi@gmail.com | になっていたジョバンニに言いい
ましたら、自分で一ぺんにぶっきりんころにはたしました。ジョバンニのうしてますと、いつはなんのようにそう言いいなんに牛乳ぎゅうを忘わすとみをたてず、どんなほんとながらすうりをはじめました。「そう、そのマジェランプが、くるところはゆるしてそれを見ながら、もうな用ようにあてていましたがね、こんばんをのぞいて外をなおにこには明るく下に青い天の川のなから四方を見ました標札ひょ。 | C    | 2019-07-11 01:50:07 | 2019-07-11 01:50:07
(1 row)

参考

  • 竹澤勇貴・栗生和明・新原雅司・大村創太郎(2018)『PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5LTS対応』ソシム
  • Laravel Document
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