Laravel シーディングとファクトリでデータを登録

2020年3月5日

PHP

シーディングの機能を利用してデータベースにデータを自動で登録してみます。

 

本記事ではMySQLを利用し、Laravelとすでに接続済みの環境において、下記のbooksテーブルを利用することを前提に話を進めていきます。

 

 

主に以下の手順を取ります。

シーダ(クラス)ファイルの作成

DatabaseSeeder.phpへの登録

シーダの実行

 

 

シーダ(クラス)の作成


 

シーダクラスのファイルを作成します。

 

生成されたファイルを下記のように編集します。まずはDBファサードを利用した記述です。

 

database/seeds/BooksTableSeeder.php

 

Eloquentを利用した記述は下記のようになります。あらかじめBookモデルを作成していることが前提です。

 

database/seeds/BooksTableSeeder.php

 

関連ページ

Eloquentでテーブルの一覧表示

 

 

DatabaseSeeder.phpへの登録


 

次に作成したシーダファイル(クラス)を呼び出す(実行する)ための設定を、DatabaseSeeder.phpに記述します。

 

database/seeds/DatabaseSeeder.php

 

 

シーダの実行


 

シーダを実行します。

 

もしくは–classオプションにクラス名を指定することができます。

 

以上でテーブルにデータを登録することができます。

 

 

 

Factory /  Faker


 

データを大量に自動生成しテーブルに登録するには、Factory(ファクトリ)とFakerを利用します。

 

–modelオプションに対象とするモデル指定し、下記コマンドを実行します。

 

BookFactory.phpが生成されるので、下記のように編集します。Fakerライブラリーによってtitleの文字列およびstockの0から100の数値をランダムに自動生成してくれるようになります。

 

database/factories/BookFactory.php

word()やnumberBetween()の他にもemail()やphoneNumber()など多くのデータ形式をランダムに生成することができます。

 

参照ページ

fzaninotto/Faker

 

はじめに作成したシーダクラスのファイルを下記のように編集します。

 

database/seeds/BooksTableSeeder.php

 

以上でシーダを実行すると100件のレコードが登録されているのが確認できます。

 

日本語で登録するにはapp.phpを下記のように設定します。

 

config/app.php

 

キャッシュをクリアしておきます。

 

 

 

参照ページ


 

Laravel 6.x データベース:シーディング

 

Laravel 6.x データベースのテスト

ファクトリの記述

 

 

 

LINEで送る
Pocket

定番本
定期本
 
Copyright © 2020 思考の葉 All Rights Reserved.  プライバシーポリシー