LOG

LaravelのSeedってなに

Laravel5 メモまとめ

Seed(シード)は、あらかじめ登録しておいた初期データを一括でテーブルに突っ込む機能のこと
Seedが種(名詞)、種を蒔く(自動詞)とかなので登録データが種で、Seederが種まき機みたいな認識で良いかな。

$ php artisan make:seeder Seeder名

で「database/seeds」にファイルが追加されるのでrunメソッド内に蒔きたいデータを入れる。

...
public function run()
{
    // DBファサードを使う

    DB::table('admins')->truncate(); // テーブルを空っぽにする
    DB::table('admins')->insert([
        'name'     => '管理者',
        'email'    => 'メールアドレス',
        'password' => bcrypt('パスワード'),
    ]);
}
...

実際に蒔くには「database/seeds/DatabaseSeeder.php」のrunメソッド内部で追加したSeederを呼ぶ。

// database/seeds/DatabaseSeeder.php
...
public function run()
{
   $this->call(追加したSeeder名::class);
}
...

※ 公式サンプルではEloquentのマスアサインメントを切る処理「Model::unguard()」と、入れる処理「Model::unguard()」が入ってるがここでは省略。

DatabaseSeeder.phpを使わずに単独で蒔きたい場合

$ php artisan db:seed --class=追加したSeeder名

でSeedを撒ける。
また、Artisanのmigrate:refreshでオプション「–seed」を付けることでデータベース再構築時に蒔くことができる。

※ Seedは「蒔く」なのか「流す」なのか・・・


参考