Advertisement

Google Ad Slot: content-top

Laravel Seeder


What is Seeder in Laravel?

A Seeder in Laravel is used to populate your database with test or default data.

👉 Example:

  • Insert default admin user.
  • Add sample products for testing.
  • Pre-fill country and state lists.

Seeders help you develop and test without manually entering data.


Why Use Seeders?

✅ Quickly fill database with dummy data.

✅ Keep initial data consistent across environments (local, staging, production).

✅ No need to manually insert records via SQL.

✅ Great for testing with sample datasets.


Create a Seeder

Use Artisan command:

php artisan make:seeder UserSeeder

This creates a file:database/seeders/UserSeeder.php


Writing Seeder (database/seeders/UserSeeder.php)

Example UserSeeder:

namespace Database\Seeders;

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

class UserSeeder extends Seeder
{
  public function run(): void
  {
    User::create([
      'name' => 'Admin User',
      'email' => 'admin@example.com',
      'password' => bcrypt('password'),
    ]);

    // Create multiple users
    User::factory()->count(10)->create();
  }
}



Running Seeder

php artisan db:seed --class=UserSeeder

DatabaseSeeder File

Laravel uses DatabaseSeeder.php as the main entry point.

Path: database/seeders/DatabaseSeeder.php

You can call multiple seeders inside:

namespace Database\Seeders;

use Illuminate\Database\Seeder;

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


Running Seeder

php artisan db:seed

Combine with Migration

Refresh the database and run seeders:

php artisan migrate:fresh --seed

 

Or with specific seeder:

php artisan migrate:fresh --seeder=UserSeeder

Where to Use Seeders?

  • Development: fill dummy data for testing.
  • Staging: load fixed sample datasets.
  • Production: insert default roles, admin user, settings.