スポンサーリンク

[Laravel] シーダを使ってDBのテストデータ作成 (Seeder)

概要

シーダクラスを使って、DBのテーブルに入れるテストデータを作成します。

実践

シーダファイル作成

以下のように、artisanコマンドでシーダファイル作成します。
公式ドキュメントによると、ファイル名は特に規定はないそうで、わかりやすい規則に従って名前を決めるようにとのこと。
公式ドキュメントの5系までは、テーブル名複数系、6系からはテーブル名単数系となっているので、
どちらかに合わせればいいかと思います。

php artisan make:seeder EmployeesTableSeeder

database\seedersに、デフォルトのシーダファイルが作成されます。

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class EmployeesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

シーダファイルの編集

    public function run()
    {
        DB::table('employees')->insert([
            'name' => 'テスト太郎',
            'age' => 20,
        ]);
    }

作成したシーダファイルのrunメソッドに、シーダ実行時のINSERT処理を書きます。

    public function run()
    {
        $this->call([
            EmployeesTableSeeder::class
        ]);
    }

デフォルトで入っている、database\seeders\DatabaseSeeder.phpのrunメソッドで、シーダ実行時に行う処理のクラスをcallメソッドで呼びます。

シーダ処理実行

php artisan db:seed

上記のコマンドで、DatabaseSeeder.phpのrunメソッドで登録されているシーダクラスの処理を実行します。

個別に実行したい場合は、以下のようにオプション付けて実行できます。

php artisan db:seed --class=EmployeesTableSeeder

実行完了すると、テーブルにテストデータがINSERTされます。