LaravelのSeeder(シーダー)を使用して、DBに初期データを自動登録します。
導入
LaravelにはテストデータなどのデータをDBに設定してくれる機能があります。
マスタデータなどはこの設定をしておくと作成環境を移すときに少し便利…かもしれません?
そんなSeederの使い方です。
実装方法
Seederを実行する前にはDBにテーブルが作成されている必要があります。
テーブルの作成にはMigration(マイグレーション) を使って作成しますが、別記事にまとめていますのでそちらを御覧ください。
手順としては、
- Seederファイルを作成
- 内容作成
- Seeder実行
となります。
1. Seederファイルを作成
今回は ” TeamMst ” というテーブルのSeederを作成します。
最初に以下のコマンドを Laravelプロジェクトのルートに移動してから実行します。
1 2 |
$ cd [Laravelプロジェクトのルートディレクトリ] $ php artisan make:seeder TeamMstTableSeeder |
実行すると、 …/database/seeds/〇〇Seeder.php のようにファイルが新規作成されていると思います。
2. 内容作成
続いて内容ですが、以下のように書けば良いです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; class TeamMstTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // DB::table('TeamMst')->insert([ [ 'name' => '本校', 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ], [ 'name' => '清城高校', 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ], ]); } } |
上記コード内のTeamMstという名前は適宜変更してください。
あとテーブルのスキーマによってinsertするデータは当然変わりますのでご注意ください。
3. Seeder実行
作成できたSeederを実行する場合には以下のコマンドを入力します。
1 2 3 4 5 6 7 8 |
$ composer dump-autoload $ php artisan db:seed (※作ったシーダだけ実行する場合) (→ $ php artisan db:seed) (※DBのテーブルをすべてリセットしてデータを入れる場合) (→ $ php artisan migrate:refresh --seed) |
$ php artisan db:seed は insert する処理を実行するだけなので、ユニークIDをSeeder内で書いていなければ、複数回コマンド実行すると複数回データがinsertされます。
以上です。