人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

LaravelでDBのシーダーを使ってデフォルトのデータをセットする

マイグレーションをやり直した時に、DBデータも自動で登録できるようにシーダーを使ってデータを作成しておくと マイグレーションのやり直しがとても楽にできます。

● DBのシーダーファイルを作る

テーブル名「clients」の場合「ClientsSeeder」や「ClientsTableSeeder」といった名前をつけて作成します。

(例: clients テーブル用のシーダーファイルを作成する )

php artisan make:seeder ClientsSeeder

database/seeds/ClientsSeeder.php が作成されます )

● 作成されたDBのシーダーファイルを編集する

database/seeds/ClientsSeeder.php

<?php
use Illuminate\Database\Seeder;
class ClientsSeeder extends Seeder
{
    /**
     * Run the database seeds.
     * @return void
     */
    public function run()
    {
        DB::table("clients")->insert([
			'id'           => 1 ,
			'client_name'  => 'テスト商事' ,
			'tel_name'     => '012-345-6789' ,
			'fax_name'     => '012-345-6780',
        ]);
        DB::table("clients")->insert([
			'id'           => 2 ,
			'client_name'  => 'てすとの商事' ,
			'tel_name'     => '112-345-6789' ,
			'fax_name'     => '112-345-6780',
        ]);
    }
}

● 呼び出し元ファイル(DatabaseSeeder.php)に記述

database/seeds/DatabaseSeeder.php に作成したシーダーファイルを記述して呼び出します

<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     * @return void
     */
    public function run()
    {
        $this->call([
          ClientsSeeder::class ,		// 追加
        ]);
    }
}

● シーダーの実行

php artisan db:seed

● Class XXXXXSeeder does not exist エラーが出る場合

composer の autoload を再読み込みしてから実行するとうまく実行できます。

composer dump-autoload
php artisan db:seed

関連エントリー

No.1303
10/23 14:43

edit

DB