If you’re working with Laravel 10+ and run into the frustrating error:
Target class [DatabaseSeeder] does not exist.
…you’re not alone. This is a common issue developers face, especially when upgrading from older Laravel versions (like Laravel 7 or 8), or when working in a freshly cloned project.
In this blog, I’ll explain why this happens, what I encountered, and how I fixed it step by step.
The Error Message
When I ran:
php artisan db:seed
Laravel returned this error:
Target class [DatabaseSeeder] does not exist.
Even though I had the DatabaseSeeder.php
file, Laravel still couldn’t find it. Here’s the root cause and fix.
Root Cause
In Laravel 8+, the location for seeders was changed from:
/database/seeds/
to:
/database/seeders/
If your project still uses the old path /database/seeds/
, Laravel may not detect your seeders by default.
My Solution (Laravel 10+)
Step 1: Move Your Seeder File
I renamed my folder from:
/database/seeds/
to:
/database/seeders/
And moved my file:
/database/seeds/DatabaseSeeder.php
to:
/database/seeders/DatabaseSeeder.php
Make sure the namespace inside the file is updated accordingly:
namespace Database\Seeders;
Step 2: Fix Composer Autoload (if previously modified)
Earlier, my composer.json
file had this line under autoload > classmap
:
"classmap": [
"database/seeds"
]
Since I moved the files to database/seeders/
, I updated it to:
"classmap": [
"database/seeders"
]
Step 3: Run Composer Autoload
After fixing the path, I regenerated autoload files:
composer dump-autoload
This time, there were no errors. Laravel successfully detected the seeders.
Step 4: Seed the Database
Finally, I re-ran:
php artisan db:seed