[Laravel] MySQLのテーブル作成とテストデーター自動生成

LaravelでMySQLに接続し、テーブルを作成。そしてシーダーという仕組みを使って自動的にテストデータを入力してみます。プログラムの学習のときはテストデータが必要となる場合が多いので、この機能を習得しておくと今後のプログラム開発に役立ちます。

envファイルにMySQL接続データを登録

Laravelのプロジェクトルートの.envファイルにMySQLの接続情報を設定します。

変更するのは
DB_CONNECTION → mysql
DB_HOST → サーバーのIPアドレス
DB_DATABASE → 任意のDB名
DB_USERNAME → 任意のMySQLユーザー名
DB_PASSWORD → 任意のパスワード
になります。

tableの作成

artisan make:migrationでtableを作成します。
テーブル名は「members」とします。

create_テーブル名(複数名)_tableという記述になります。

コンソールに「Created Migration: 2020_04_12_062956_create_members_table」という形式のメッセージが出ます。

プロジェクトのdatabase > migrationsの中にファイルが生成されているのでこれを開いて編集します。

ファイルパス「 /database/migrations/2020_04_12_062956_create_members_table」

以下のようなメッセージが出力されます。
Migrating: 2020_04_12_062956_create_members_table
Migrated: 2020_04_12_062956_create_members_table (0.01 seconds)
これで成功しています。

phpMyAdminでtableが生成されているか確認してみます。
2020-04-12_15h41_22

membersテーブルが作られ、指定したカラムも作られています。

Modelの作成

artisanを使ってモデルを作成します。
Laravelのプロジェクトディレクトリで以下のコマンドを実行します。

Laravelではテーブル名は複数形、Modelは単数形になっています。
membersテーブルなのでモデルはMemberとなります。
実行すると「Model created successfully.」という緑のメッセージが表示されます。

プロジェクトディレクトリのappの中にMmber.phpというモデルファイルが作られます。

シーダー

シーダーとはサンプルデーターを自動に生成する仕組みです。レコード数の多いデーター、テーブルが多いシステムなどではサンプルデータを作るだけでも大変です。シーダーを使うと簡単にサンプルデータが作れてしまうので便利です。このような機能があるのもフレームワークの良いところです。

シーダーファイルを作るには以下のコマンドを実行します。

こちらはMembersと複数形になっていることに注意しましょう。
実行すると「Model created successfully.」という緑のメッセージが表示されます。

database > seedsにファイルが生成されています。
「MembersTableSeeder.php」というファイルが作られていました。

以下のように記載します。

function run()の中身は空になっています。

DB::table(‘members’)->delete(); → データを消去
$faker = Faker\Factory::create(‘ja_JP’); → 日本語の設定
for文で10回の繰り返し(10件のデータを登録)
それぞれのフィールドに自動生成する値を設定。
$faker ->name(); の形式で入力する。

fakerのプロパティは下記が参考になります。

[Laravel5.1]Fakerチートシート

ファイルが完成したら、保存します。

生成されるデータ

2020-04-12_16h12_02
かなり現実的なデーターが生成されます。
メールアドレスとか電話番号は適当に作っているのだろうけれど、実在しているデータと一致してしまうこともありそうな・・・一応ボカしておきました(笑)
この機能は便利ですね。今まではある程度のパターンのテストデータを用意していましたが、もう用意する必要無しという感じです。

コマンドのまとめ

テーブルの作成からシーダーの実行までの一連のコマンドをまとめておきます。



Author: webmaster