Laravel8 FactoryとSeederでダミーデータを作る方法

Laravel 入門講座
スポンサーリンク

Laravel8ではFactoryとSeederを使って、ダミーデータを手軽に作れます。

普通の作り方と、リレーションが入った場合の応用編の作り方を紹介します。

本当に簡単で、びっくりします。

Laravel7との違いも最後にお伝えしますね。

スポンサーリンク

Laravel8 FactoryとSeederでダミーデータを作る方法 基本編

まずはユーザーモデルを使った基本の作り方を紹介します。

① 日本語のダミーデータを作る設定にする

日本人の名前のダミーデータを作りたい場合は、最初にapp/config のapp.phpファイルの設定を変更しておきましょう。

109行目あたりの ‘faker_locale’ を ‘ja_JP’ としておきます。

なお 【locale】は ‘ja’ としますが、【faker_locale】はなぜか’ja_JP’ としないとダメみたいなので、注意してください^^;

②Seederファイルを編集する

次にdatabase/seeders のDatabaseSeeder.phpファイルを開きます。

デフォルトで下記のように入っています。

ユーザーモデルを10個作る、という意味ですが、とりあえずこれでOKとします。

③ Seedコマンドを実行

下記のコマンドを実行します。

これで完了です。

データベースには日本名のダミーデータが10個作られています。

なんだか、本当にありそうな名前ばかりですね^^;

Laravel8 FactoryとSeederでダミーデータを作る方法 応用編

次に応用編を解説します。

リレーションがあるときや、ダミーデータの型を指定したいときには、ファクトリーファイルを編集していきましょう。

①ファクトリーファイルを作成する

php artisan make:factory を実行します。

ファクトリーの名前はお好きなものにしてください。

最後にモデル名も入れておくと、あらかじめモデル名が設定されているので便利です。

② ダミーデータ用にカラム情報を登録する

①を実行すると、database/factories の中にできたファクトリーファイルができます。

ファイルの中に、ダミーデータを作るカラム情報を登録しましょう。

たとえば件名と投稿という3つのカラムであれば、次のようにします。

ポイント

・絶対入れなければいけない値を設定している場合は、その値をいれておきましょう。

・idやtimestumpは自動で入るので、入れなくても大丈夫です。

ダミーデータのデータタイプ

faker->の後は、入れたいデータの種類によって変えてください。

次の表によく使うデータタイプをまとめたので、参考にしてください。

【fakerが作成するデータタイプ】

データ
タイプ
faker
データ型
作成される
ダミーデータ例
人の名前 nameAdeline Rippin
住所 address Rippin
34688 Kim Glens
New Linnie, MI 66103
文書 textEt occaecati aut assumenda a. Et consequatur volup…
文字数指定文書 text($maxNbChars = 100)
ランダムな1桁数字 randomDigit6
範囲指定数字 numberBetween($min=100, $max=1000)136
電話番号 phoneNumber(747) 693-2704 x645
メールアドレス emaillibby71@gmail.com

文字数制限

入れるデータに文字数制限をつけるには、カッコで文字数をいれます。

belongsToリレーション

リレーションを付けたデータを入れることも可能。

たとえば user_id カラムのデータを入れる場合、ファイルの先頭にモデル名を指定しておきます。

カラム情報は User::factory()とします。

③ Seederを作成する

database/seeders の中のDatabaseSeeder.phpファイルを開きます。

デフォルトでユーザーモデルのダミーデータを10個作る設定が入っています。

作成するモデルとダミーデータ数に合わせて、public function run() の後を変更します。

たとえばInquiryモデルのダミーデータを5個作るなら、下記のようになります。

④ seedコマンドを入力

下記コマンドを実行すれば、ダミーデータ作成完了です。

こんな感じの日本人名と件名、投稿内容入りデータが入りました。

Laravel8とLaravel7の比較

Laravel8より前から、このFactory機能とSeeder機能はありました。

ただ、もう少し面倒だったのです。

Laravel8では、デフォルトでモデルファイルにHasFactoryが設定されています。

このため、今回の記事の前半でご紹介したように、ほとんど何もせずに最初からダミーデータを実行できてしまいます。

またSeederファイルにいれるコードも、Laravel8は分かりやすくなっています。

【Laravel8】\App\Models\User::factory(3)->create();
【Laravel7】$users = factory(App\User::class, 3)>create();

なおLaravel8で以前のファクトリー機能を使いたい場合には、laravel/legacy-factoriesパッケージを使う必要があります。

Laravel8のアップグレード項目は、こちらの記事にまとめてあります。

Laravel 入門講座 Laravelバージョンアップ・ニュース

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中!
会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

【個別サポート実施中】

「本ブログに記載の方法を試してみたけれど、うまくいかない」「コードを見てほしい」という方のために、有償でメールサポートいたします。以下のボタンをクリックして相談フォームにアクセスして下さい。

詳しく見る

Twitter始めました。
スポンサーリンク
40代からプログラミング!

コメント

タイトルとURLをコピーしました