L

シーダーとファクトリでテストデータを作る

動作確認用のダミーデータを自動で投入する「シーダー」と「ファクトリ」の使い方を、初心者向けにやさしく解説します。

広告枠(記事上)— 本番では AdSense 広告が表示されます

テーブルを作ったばかりの状態は、当然ながら空っぽです。画面の表示を確認するには、いくつかデータが入っていると便利です。毎回手で入力するのは大変なので、Laravel にはダミーデータを自動で入れる仕組みがあります。それが シーダーファクトリ です。

シーダーとファクトリの役割

  • シーダー(Seeder)…「データを投入する係」。どんなデータを入れるかを書く。
  • ファクトリ(Factory)…「それっぽいダミーデータを作る係」。名前やメールなどを自動で生成する。

イメージは、ファクトリが料理(ダミーデータ)を作り、シーダーがそれをテーブルに配膳する、という分担です。

ファクトリを作る

ここでは前の単元で作った posts 表にデータを入れます。まず、Post モデルとファクトリを用意します(モデルは次章で詳しく学びます。今は「表とセットの相棒」とだけ思ってください)。

php artisan make:model Post --factory

database/factories/PostFactory.php が作られます。definition() に「1件分のダミーデータの形」を書きます。

public function definition(): array
{
    return [
        'title' => fake()->sentence(),
        'body'  => fake()->paragraph(),
    ];
}

fake() は、それっぽいダミー文字列を自動生成してくれる便利な道具です。sentence() は短い文、paragraph() は段落を作ります。

シーダーから呼び出す

次に、ファクトリを使ってデータを投入します。database/seeders/DatabaseSeeder.phprun() に書きます。

public function run(): void
{
    \App\Models\Post::factory(10)->create();
}

factory(10)->create() で、「ダミーの投稿を10件作って保存する」という意味になります。

実行する

シーダーを実行してデータを投入します。

php artisan db:seed

マイグレーションとシーダーをまとめてやり直したいときは、次の1コマンドが便利です(既存データは消えます)。

php artisan migrate:fresh --seed

これで、空だった posts 表に10件のダミー投稿が入りました。次章で、このデータを画面に表示していきます。

まとめ

  • シーダーはデータを投入する係、ファクトリはダミーデータを作る係。
  • make:model Post --factory でモデルとファクトリをまとめて作成。
  • ファクトリの definition() に1件分の形を書き、fake() でそれっぽい値を生成。
  • php artisan db:seed で投入。migrate:fresh --seed で作り直し+投入をまとめて実行。
  • 第4章はこれで完了です。次章では、いよいよ Eloquent でデータを自在に操作します。
広告枠(記事下)— 本番では AdSense 広告が表示されます