【Laravel8】DB周りの解説(テーブル作成、データ投入、データ検索等)- データ投入編 (初級レベル)

2021年10月4日

はじめに

Laravelでテーブルにデータを投入していく方法を解説していきます。
ここでは作成したテーブルにマスターデータを投入することを想定しています。
(アプリからのデータ投入はまた別途ご説明します。)

概要

このテーブルにデータを投入していく方法です。
テーブル作成までのところはこちらのページをご参照ください。

https://karaagelovers.com/create-mysql-table-with-laravel-commands/


前回作ったこちらのスキーマを使います。
テーブル名members

FieldTypeNullKeyDefaultExtra
idbigint unsigned NOPRINULLauto_increment
usernamevarchar(255)NONULL
emailvarchar(255)NONULL
email_verified_attimestampYESNULL
created_attimestampYESNULL
updated_attimestampYESNULL

やり方


データ投入内容設定クラス(Seeder)の作成

このサンプルでは以下2レコードを挿入します。

usernameemailemail_verified_atcreated_atupdated_at
日本太郎nihon.taro@gmail.comデータ挿入日時データ挿入日時データ挿入日時
日本太郎2nihon.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クラスを使ってテスト用に自動生成したダミーデータを追加する方法を解説します。

Posted by karaagelovers