はじめに
Laravelでテーブルにデータを投入していく方法を解説していきます。
ここでは作成したテーブルにLaravelコマンドで
マスターデータを投入することを想定しています。
テスト用データ投入についてはこちら
Laravelコマンドでマスタデータを投入するメリット
Laravelコマンドでマスタデータを投入するメリットはなんでしょうか?
各アプリには、
サービスローンチ時に必ず入れておかなければいけない、
マスターデータが必要な場合が多いでしょう。
MysqlなどDBへ直接データを入れる方法もありますが、
Laravel PJ内で管理、データ生成できるようにすれば、
管理、構築、テストが楽になるのでお勧めです。
概要
このテーブルにマスタデータを投入していく方法です。
テーブル作成までのところはこちらのページをご参照ください。
https://karaagelovers.com/create-mysql-table-with-laravel-commands/
前回作ったこちらのスキーマを使います。
テーブル名members
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | bigint unsigned | NO | PRI | NULL | auto_increment |
username | varchar(255) | NO | NULL | ||
varchar(255) | NO | NULL | |||
email_verified_at | timestamp | YES | NULL | ||
created_at | timestamp | YES | NULL | ・ | |
updated_at | timestamp | YES | NULL |
マスターデータ投入のやり方
データ投入内容設定クラス(Seeder)の作成
このサンプルでは以下2レコードを挿入します。
username | email_verified_at | created_at | updated_at | |
---|---|---|---|---|
日本太郎 | nihon.taro@gmail.com | データ挿入日時 | データ挿入日時 | データ挿入日時 |
日本太郎2 | nihon.taro2@gmail.com | データ挿入日時 | データ挿入日時 | データ挿入日時 |
データ挿入クラスの作成
まずはデータ挿入クラスの作成をします。
シーダクラスと言ってここでは基本的には、
テーブル作成時に初期で投入しておきたいデータを定義します。
以下コマンドを実行します。
↓コマンドです。php artisan make:seeder {クラス名}Seeder
例)php artisan make:seeder MemberSeeder
コマンド実行時に以下のファイルが生成されました。
database/seeders/MemberSeeder.php
データの定義を追加
マスターデータの定義を追加していきます。
MemberSeeder.phpはいじらず
同じディレクトリにあるDatabaseSeeder.phpを編集します。
Before(編集前)
コマンド実行時に自動生成されたファイル

After 編集後

解説
6行目
//DBクラス使う宣言
use Illuminate\Support\Facades\DB
18行目から20行目
Memberクラスを呼ぶ宣言

次にファイル名 database/seeders/MemberSeeder.php
の編集をします。
基本的にmembers tablesへの操作はこのクラスに書くと
管理しやすいです。

19行目から32行目
membersテーブルへ挿入する内容の定義
今回は2レコード挿入しています。
書き方は配列の定義に似ていますね。
カッコの位置、数に注意して作業しましょう。
(慌てない慌てない)
データ挿入コマンドの実行
ファイル編集が終わったらデータ挿入のコマンドを実行します。
↓コマンドです
php artisan db:seed
コマンドを実行すると下記のように実行ログが出てきます。
想定通りMemberSeederクラスの処理が行われているようです。
Seeding: Database\Seeders\MemberSeeder
Seeded: Database\Seeders\MemberSeeder (0.02ms)
Database seeding completed successfully.
コマンド実行は成功しているようなのでDBに入ってテーブルの状況を見ます。
無事データが挿入されていました!!

以上です。
次はFakerクラスを使ってテスト用に自動生成したダミーデータを追加する方法を解説します。
コメント