Database Seeders

Laratic ships with three curated seeders so you can load just enough sample data (or a lot of it) depending on your environment. Each seeder calls the same underlying classes but tweaks the record counts and percentages to simulate different workloads.

Side-by-side comparison

Seeder Ideal for Users AI usage per user Subscriptions Orders
Minimal Fresh installs, quick demos 1 admin + 10 users 2-5 records ~20% of users ~15% of users, 1-2 orders
Demo Sales demos, screenshots 1 admin + 500 users 10-30 records ~35% of users ~25% of users, 1-5 orders
Heavy Stress testing, perf profiling 1 admin + 5,000 users 3-8 records (350k+ rows) ~10% of users ~30% of users, 0-2 orders

How to run each seeder

Basic commands

  • php artisan db:seed → runs DemoSeeder via DatabaseSeeder.
  • php artisan db:seed --class=MinimalSeeder → loads the compact dataset.
  • php artisan db:seed --class=DemoSeeder → explicitly reseeds the demo data.
  • php artisan db:seed --class=HeavySeeder → kicks off the heavy scenario.

After a fresh migration

Combine migrations and seeding when you want a clean slate:

php artisan migrate:fresh --seed --seeder=MinimalSeeder
php artisan migrate:fresh --seed --seeder=DemoSeeder
php artisan migrate:fresh --seed --seeder=HeavySeeder

Production safety

  • Laravel prompts for confirmation in production. Add --force only if you are sure: php artisan db:seed --class=MinimalSeeder --force.
  • Heavy seeding can take several minutes; run it inside a detached terminal session and monitor disk space.
  • Each seeder is idempotent enough for local use, but if you need a truly clean slate, favor migrate:fresh --seed.

Where the seeders live

  • File database/seeders/MinimalSeeder.php
  • File database/seeders/DemoSeeder.php
  • File database/seeders/HeavySeeder.php
  • Entry point database/seeders/DatabaseSeeder.php