Ошибка в Laravel 5 «[ReflectionException] Class …TableSeeder does not exist»

Статья о том, как починить ошибку в Laravel 5 с загрузкой фикстур (Seeder)

Ошибка в Laravel 5 «[ReflectionException] Class …TableSeeder does not exist»
Photo by Quinton Coetzee / Unsplash

Класс UserRoleTableSeeder должен находится в файле database/seeds/UserRoleTableSeeder.php и находится в глобальной области видимости.

Пример файла с созданием тестовых данных:

<?php

use Illuminate\Database\Seeder;

class UserRoleTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('user_roles')->insert([
            'name' => 'Администратор',
            'code' => 'administrator',
        ]);
        DB::table('user_roles')->insert([
            'name' => 'Модератор',
            'code' => 'moderator',
        ]);
        DB::table('user_roles')->insert([
            'name' => 'Пользователь',
            'code' => 'user',
        ]);
        DB::table('user_roles')->insert([
            'name' => 'Редактор контента',
            'code' => 'content-manager',
        ]);
    }
}

А также в файле database/seeds/DatabaseSeeder.php необходимо в методе run прописать использование класса UserRoleTableSeeder.

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
         $this->call(UserRoleTableSeeder::class);
    }
}

Таким образом команда php artisan db:seed запустит метод run нужного нам класса и заполнит таблицу строками. А чтобы класс была найден необходимо через менеджер зависимостей composer переформировать пути для загрузки. Для этого необходимо выполнить команду composer dump-autoload.

В результате получим рабочий autoload нашего класса и успешное выполнение команды.