Laravel7 Seederでダミーデータを作る方法【初心者のためのLaravel超入門講座】

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

Webアプリを作成するとき、本番前に色々テストするために、ダミーデータが必要になることもありますよね。

Laravelには、Seederという手軽にダミーデータを作成できる機能が備わっています。

今回は色々なダミーデータの作り方をマスターしましょう。

本記事はLaravel7についての解説です。

モデルファイルの場所や指定方法がLaravel8と異なることがあります。

たとえば、Laravel7で下記のように指定してある部分があるとします。

App\User::truncate();
Laravel8では、次のように書き替える必要があります。
\App\Models\User::truncate();
このあたりにご留意ください。

Laravel8については、こちらの記事もご覧ください。

スポンサーリンク

LaravelのSeederで1個ずつダミーユーザーを作る方法

ダミーデータを作る方法を3個、順番に解説していきます。

ちなみにseedとは【種】の意味で、seederとは【種をまく】という意味。

ばばっと種をまくように、データを作っていくイメージがわきますね。

では、まずは基本の方法を解説していきます。

①Seederファイルを編集する

Laravelをインストールしたフォルダの app/database/seeds フォルダにDatabaseSeeder.phpが入っています。

このファイルを開きます。

次のコードを追加します。

ユーザーテーブル内のカラムに入れる条件をひとつずつ指定しています。

入力後のファイルは、次のようになります。

②Seedを実行する

下記のコマンドを入力します。

【Database seeding completed successfully】というコマンドが返ってきたら成功。

データベース上にダミーユーザーが登録されているはずなので、チェックしてみてください。

LaravelのSeederで一気にダミーデータを作る方法

ダミーデータを作るときって、一気に作成したいことも多いですよね。

Laravelの【factory】を使えば、何個でも、一気にデータを作れます。

factoryとは、工場といった意味。

1粒ずつ種をまかず、工場で一気にデータを作ってしまうようなイメージですね。

①factoryファイルを編集する

Laravelをインストールしたフォルダの app/database/factories フォルダにUserFactory.phpが入っています。

このファイルを開きます。

既に次のようなユーザーテーブル用データが入っています。

ユーザーテーブルをデフォルト状態から変更していなければ、このままの情報を使います。

もしカラムを追加した場合には、追加カラムの情報を書き加えておきましょう。

③そのほかのテーブルの情報も追加する

ユーザーテーブルだけでなく、他のテーブルのデータも作成したい場合には、テーブルの情報をUserFactory.phpファイルに追加します。

たとえば次のようなポストテーブルを追加したい場合。

UserFactory.phpファイルの先頭に、下記を加えておきます。

さらにユーザーテーブルに関するデータの後に、下記のように書いておきます。

なお、$fakerの後には、どんな種類のフェイクデータを入れるか指定しています。

データの種類は、下記サイトから見つけられます。

④Seederファイルを編集する

Laravelをインストールしたフォルダの app/database/seeds フォルダにDatabaseSeeder.phpが入っています。

このファイルを開きます。

次のコードを入力します。

これで、ユーザーテーブルとポストテーブルに、10個ずつダミーデータが追加されます。

この数字は、お好みで変更してください。

⑤Seedを実行する

下記のコマンドを入力します。

【Database seeding completed successfully】というコマンドが返ってきたら成功。

データベース上にダミーユーザーが登録されているはずなので、チェックしてみてください。

LaravelのSeederでリレーション付きのダミーデータを作る方法

テーブルの間でリレーションがある場合には、できればリレーション付きでダミーデータを作りたいですよね。

たとえば、ユーザーテーブルのidと、ポストテーブルのuser_idが hasManyで連携しているとき。

ポストテーブルのuser_idは、ユーザーテーブルのidのどれかが割り振られるはずです。

ダミーデータでも、このリレーションどおりにダミーデータを作成する方法を2つ紹介します。

方法①factoryファイルで設定する

ファクトリーファイルを開きます。

下記は、Postテーブルのダミーデータを作成するための情報です。

user_idカラムを次のように記述すれば、リレーションができます。

実行すると、ポストテーブルとユーザーテーブルのダミーデータを同時に作ることができます。

方法②Seederファイルで設定する

Laravelをインストールしたフォルダの app/database/seeds フォルダのDatabaseSeeder.phpファイルを開きます。

次のコードを入力します。

データを一括削除しながらダミーデータを作る方法

seeder機能は便利ながら、一気にデータが作れるので、削除するのも大変ですよね。

一気に削除したい場合は、truncateを使えば、一括削除ができます。

削除したいテーブルを示すモデルのtruncate() メソッドを呼び出しましょう。

なおtruncateを実行すると、既存のデータも一気に消えてしまいますし、やり直しも効きません。

使う前には、十分に注意してくださいね。

英語の豆知識
truncateは、切り取る、切り詰めるといった意味があります。

もし古いダミーデータを削除しながら、新しいダミーデータを作成したいときには、truncateをcreate文の前に入れておきましょう。

次のような感じです。

このあとにphp artisan db:seedを実行すると、古いデータを削除した後、新しいダミーデータが作成されます。

新しくファイルを作成してダミーデータを作る場合

今回は、既存のファイルを使ってダミーデータを作りました。

もし新しくファクトリーファイルを作成したい場合には、下記のコマンドを使います。

database/factories フォルダの中に、新たにファクトリーファイルが作成されます。

上記記事を参考に、各カラムの情報を入力してください。

次に app/database/seeds フォルダのDatabaseSeeder.phpファイルに、作成したいダミーデータの数を指定します。

seedを実行します。

さいごに

今回のまとめ

  • seedを使うと、ダミーデータを手軽に作成できる
  • factoryを使ってseedを行うと、一気に複数のダミーデータを作成できる
  • リレーションを反映したダミーデータを作成することも可能
  • ダミーデータを一括削除するにはtruncateが便利だが、削除したら戻らないので要注意

100個、1000個のデータが入ると、システムがどんなふうに動くか。

こんな実験もseedを使うと簡単にできてしまいますね。

Laravel 入門講座 Laravelデータベース

【無料プレゼント】

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

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

詳細はこちらをクリック

【個別サポート実施中】

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

詳しく見る

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

コメント

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