Tech Starlog

Laravel Seederの基本的な使い方

投稿日:2026/01/17

Laravelでは、データベースに初期データやテストデータを投入するために Seeder(シーダー) を使用します。
マスターデータの登録や、開発環境での動作確認用データ作成をコードで再現できる点が特徴です。

本記事では、Seederの基本的な使い方について、次の内容を解説します。

  • Seederとは何か
  • Seederファイルの作成方法
  • データ登録の実装例
  • 実行方法と運用ルール
  • 活用パターン

Seederとは?

Seederとは、データベースにデータを登録する処理をコードで管理する仕組みです。

次のような用途で使用されます。

  • マスターデータ(都道府県・カテゴリなど)の登録
  • 初期管理ユーザーの作成
  • 開発・検証用のダミーデータ作成
  • 環境構築の自動化

Seederを使うことで、

  • 環境ごとの差分をなくせる
  • 手作業による登録ミスを防げる
  • Gitで履歴管理できる

といったメリットがあります。


Seederファイルの作成

artisanコマンドで作成する

以下のコマンドでSeederを作成します。

php artisan make:seeder SamplesTableSeeder

作成されるファイルは次の場所に生成されます。

database/seeders/SamplesTableSeeder.php

Seederの実装例

サンプルデータを登録する

use Illuminate\Database\Seeder;
use App\Models\Sample;

class SamplesTableSeeder extends Seeder
{
    public function run(): void
    {
        Sample::create([
            'title' => 'サンプル',
            'body' => 'Seederから登録したテストデータです。',
            'is_published' => true,
        ]);
    }
}

このSeederを実行すると、samplesテーブルに1件のレコードが登録されます。


DatabaseSeederから呼び出す

Seederは単体では実行されず、 DatabaseSeeder から呼び出して実行します。

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    public function run(): void
    {
        $this->call([
            SamplesTableSeeder::class,
        ]);
    }
}

Seederを実行する

実行コマンド

php artisan db:seed

DatabaseSeeder に登録されたSeederがすべて実行されます。


マイグレーションと同時に実行する

php artisan migrate --seed

テーブル作成後にSeederが自動で実行されます。


複数データを登録する

配列でまとめて登録する

$samples = [
    [
        'title' => 'タイトル1',
        'body' => '本文1',
        'is_published' => true,
    ],
    [
        'title' => 'タイトル2',
        'body' => '本文2',
        'is_published' => false,
    ],
];

foreach ($samples as $sample) {
    Sample::create($sample);
}

Factoryと組み合わせる

大量のダミーデータを作成したい場合は、Factoryと組み合わせます。

Sample::factory()->count(50)->create();

SeederからFactoryを呼び出すことで、
テスト用データを一括生成できます。


よく使うSeederの種類

種類 用途
マスタSeeder カテゴリ・権限・設定値
初期ユーザーSeeder 管理者アカウント
開発用Seeder ダミーデータ
テストSeeder 自動テスト用

運用上の注意点

  • 本番環境でダミーデータSeederを実行しない
  • 冪等性(何度実行しても問題ない設計)を意識する
  • マスターデータは更新方法を明確にする
  • 実行対象Seederを環境で切り替える

よくあるミス

データが重複登録される

同じSeederを何度も実行すると、
同一データが重複登録されることがあります。

対策例:

Sample::updateOrCreate(
    ['title' => 'サンプル'],
    ['body' => '更新データ']
);

まとめ

  • Seederは初期データ・テストデータを登録する仕組み
  • db:seed で一括実行できる
  • Factoryと組み合わせると大量データ生成が可能
  • 本番環境では実行対象に注意する