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.
The root
DatabaseSeeder calls DemoSeeder by default, so
php artisan db:seed always gives you the demo dataset unless you override it with
--class.
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→ runsDemoSeederviaDatabaseSeeder.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--forceonly 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