Laravel5.6, 5.7 seederコマンドでテストデータを投入する

Laravel5.6, 5.7 seederコマンドでテストデータを投入する

前回まで、Laravel 5.6, 5.7 管理画面パッケージ「Voyager」を紹介してきましたが、色々機能を確かめたいけど、画面からテストデータを追加するのだるい、、、

ということで、今回はLaravel 5.6, 5.7でテーブルにテストデータを一気に投入する、Seeder機能を紹介します。

 

条件として

products テーブル:name(text), price(int), tag_id(int)

tagsテーブル:name(text)←既に5データ投入済

tag_idにはtagsデータのid,1~5が入るものとします。

 

ファイル作成

Laravel5.6 のartisanコマンドから以下を実行します。

php artisan make:seeder ProductsTableSeederコマンドにてモデルシーダを作成します。このファイルにはrunメソッドがデフォルトで用意されているので、少量のテストデータの準備でしたらこの中に直接記述でOKです。

php artisan make:factory ProductFactory –model=Productで、大量投入用のデータを自動で作成してくれるモデルファクトリを作成します。–model=Productでデフォルトのモデルを指定しています。

ファイル編集

・ProductFactory編集

モデルファクトリの中で、投入するデータのルールを記述します。今回は

name:ランダムで10文字、price:100~1000の乱数、tag_id:1~5の乱数とします。

 

・ProductsTableSeeder編集

runメソッドにモデルファクトリを使用する記述をします。100は作成するデータ数です。ですので上記ですと、ProductFactoryを使用して100個モデルデータを作成する記述になります。

実行

コンソールから下記のコマンドを実行します。

php artisan db:seed でSeederを実行します。今回はProductsTableSeederのみ実行したかったので、クラスを指定して実行しました。

 

データが入っていることが確認出来ました。

 

FactoryではFaker PHPライブラリーのインスタンスを受け取っているので、名前やメールアドレス、住所なども自動入力可能です。

Seederでは、リレーションデータの作成も可能です。ドキュメントに色々載っていますので、ぜひ活用してください。

Laravelカテゴリの最新記事