Ошибка в Laravel 5 «[ReflectionException] Class …TableSeeder does not exist»
Статья о том, как починить ошибку в Laravel 5 с загрузкой фикстур (Seeder)
Класс 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 нашего класса и успешное выполнение команды.