【Laravel5.8】テーブルにダミーデータを入れたい

テスト運用時に

「初めからテーブルにダミーデータを入っていたらなあ…」

と思いつつ、これまで長らく1つ1つわざわざデータを入れていました。

しかし、LaravelにはSeederという優れた機能があります。

以下はSeederの使い方の一例。

Seederを作成
$ php artisan make:seeder CategoryTableSeeder
database/seeds/CategoryTableSeeder.phpに書き込み
    public function run()
    {
        $datas = [
            ['category' => '小説'],
            ['category' => 'ノンフィクション'],
            ['category' => 'ビジネス'],
            ['category' => '漫画'],
            ['category' => 'その他'],
            ];
        DB::table('categories')->insert($datas);
    }
Seederを実行
$ php artisan db:seed --class=CategoryTableSeeder
categoriesテーブルを確認
mysql> select * from categories;
+----+--------------------------+------------+------------+
| id | category                 | created_at | updated_at |
+----+--------------------------+------------+------------+
|  1 | 小説                     | NULL       | NULL       |
|  2 | ノンフィクション         | NULL       | NULL       |
|  3 | ビジネス                 | NULL       | NULL       |
|  4 | 漫画                     | NULL       | NULL       |
|  5 | その他                   | NULL       | NULL       |
+----+--------------------------+------------+------------+
5 rows in set (0.00 sec)

ちゃんと入っていました!

ちなみにmigrateと同時にSeederを起動するには、

php artisan migrate:refresh --seed

こんな感じでOK。


全てのSeederを起動するには、

php artisan db:seed

こんな感じで。