Seeder
テストデータをデータベースに設定するための機能。シーダークラスはdatabase/seedsに保存する。
デフォルトでDatabaseSeederクラスが定義されている。このクラスからcallメソッドで他のシーダークラスを呼び出すことで、シーディングの順番をコントロールできる。
テーブル名について
今回の作業をするにあたって、テーブル名の最後にsをつけたほうが都合がよい。
例えば、テーブル:hoges , データ(1レコード):hoge のようなイメージ。
シーダークラスの生成
$ php artisan make:seeder HogesTableSeeder
シーダークラスを利用するためにはDatabaseSeederクラスに呼び出したいクラスを追加します。
public function run ()
{
    $this->call(HogesTableSeeder::class);
}
シーダーの実行
// DataBaseSeederを実行する
$ php artisan db:seed
// 特定のファイルを個別に実行する
$ php artisan db:seed --class=HogesTableSeeder
データベースを完全に再作成したい場合は以下のコマンドが便利。
$ php artisan migrate:refresh --seed
シーダーの編集
HogesTableSeeder.php
public function run()
{
    //
    $now = \Carbon\Carbon::now();
    for ($i = 1; $i <= 10; $i++) {
        $hoge = [
            'name' => 'user' . $i,
            'mail' => 'user' . $i . '@localhost',
            'created_at' => $now,
            'updated_at' => $now,
        ];
        DB::table('hoges')->insert($hoge);
    }
}
Faker
より現実に近いテストデータを簡単に作成できるライブラリ。
作成できるダミーデータは主に次の通り。
| 項目名 | 出力データ | 
|---|---|
| name | 氏名 | 
| メールアドレス | |
| safeEmail | メールアドレス | 
| password | パスワード | 
| address | 住所 | 
| phoneNumber | 電話番号 | 
| company | 企業名 | 
| realText | テキスト | 
// 初期化
$faker = Faker\Factory::create('ja_JP');
// データの取得
$faker->name
$faker->email
Fakerの生成するデータのロケールを変更したい場合、設定ファイルでも変更できる。
config/app.php に以下を追加する。
    'faker_locale' => 'ja_JP',
Factory
大量のデータベースレコードを作成するのに便利。
モデルクラスを作成する。app配下にHoge.phpが作成される。
$ php artisan make:model Hoge
ファクトリークラスを作成する。database/factoriesフォルダにHogeFactory.phpが作成される。
$ php artisan make:factory HogeFactory
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の編集。
<?php
use Illuminate\Database\Seeder;
class HogesTableSeeder extends Seeder
{
    public function run ()
    {
        // 50レコード作成する
        factory (\App\Hoge::class, 50)->create();
    }
}
DatabaseSeeder.phpの編集。
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
    public function run ()
    {
        $this->call(HogesTableSeeder::class);
    }
}
実行。
$ php artisan db:seed
以上です。
参考
- 竹澤勇貴・栗生和明・新原雅司・大村創太郎(2018)『PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5LTS対応』ソシム
 - Laravel Document
 
  
  
  
  