I'm trying a basic php artisan db:seed after migrating my database but it keeps returning the title error in cmd -[ReflectionException] Class 'UserTableSeeder' does not exist
Things I Have Tried
Below is the migrations
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function(Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password', 60); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('users'); } }
Below is the UserTableSeeder.php
<?php use App\User; use Illuminate\Database\Seeder; class UserTableSeeder extends Seeder { public function run() { DB::table('users')->delete(); User::create(['email' => '[email protected]']); } }
Below is the DatabaseSeeder.php
<?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); $this->call('UserTableSeeder'); } }
Run composer dumpautoload
after creating files in the database/ folder.
Why?
Check the composer.json
autoload section and you'll see the database/
folder is loaded by "classmap" (source):
"autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" } },
The Composer docs describe classmap as:
The classmap references are all combined, during install/update, into a single key => value array which may be found in the generated file vendor/composer/autoload_classmap.php. This map is built by scanning for classes in all .php and .inc files in the given directories/files.
You can use the classmap generation support to define autoloading for all libraries that do not follow PSR-0/4. To configure this you specify all directories or files to search for classes.
Emphasis added. You need to run the composer dumpautoload
command to generate a new classmap every time you add a file to database/
, otherwise it will not be autoloaded.
The app/
folder, by contrast, uses the PSR-4 standard for converting a fully qualified class name to a filesystem path. This is why you don't need to dumpautoload
after adding files there.
Sometimes the code is correct but you need to run the following command in order to run the seeder command. First Run this command
composer dumpautoload
Then seed the seeder
php artisan db:seed --class=CreateUsersTable
I hope it will work
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With