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の教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

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

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

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

 

Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
デプロイ講座付。StripeやChatGPT連携など過去10回分のセミナー動画視聴可能。

Laravel実践スキルをのばしたい方におすすめです。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました