Ошибка "Класс 'UserTableSeeder' не существует" - Laravel 5.0 [php artisan db:seed]
Проблема с запуском сидера в Laravel
Я пытаюсь выполнить базовую команду php artisan db:seed
после миграции базы данных, но постоянно получаю ошибку в консоли:
[ReflectionException] Class 'UserTableSeeder' does not exist
Что я пробовал
- Изменил пространство имен в файле
UserTableSeeder.php
наnamespace Database\seeds;
и добавилuse Database\seeds\UserTableSeeder;
в файлеDatabaseSeeder.php
.
Миграции
Ниже приведен код миграции для создания таблицы пользователей:
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
/**
* Выполнить миграцию.
*
* @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();
});
}
/**
* Обратная миграция.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
UserTableSeeder.php
Вот код 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]']);
}
}
DatabaseSeeder.php
И вот код из DatabaseSeeder.php
:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
/**
* Выполнить сидирование базы данных.
*
* @return void
*/
public function run()
{
Model::unguard();
$this->call('UserTableSeeder');
}
}
Пожалуйста, подскажите, как решить эту проблему!
4 ответ(ов)
Иногда код может быть правильным, но вам нужно выполнить следующую команду, чтобы запустить команду сидирования.
Сначала выполните эту команду:
composer dumpautoload
Затем запустите сидер:
php artisan db:seed --class=CreateUsersTable
Надеюсь, это поможет!
Попробуйте заменить
$this->call('UserTableSeeder');
на
$this->call(UserTableSeeder::class);
и затем выполните команду
composer dump-autoload
Это должно помочь устранить проблему.
Когда вы изменяете или удаляете файл контроллера или любой другой файл, необходимо убедиться, что он удален из всех мест в коде. Чтобы обновить автозагрузку классов, выполните следующую команду:
composer dump-autoload
Эта команда пересоберет файл автозагрузки, что позволит вашему приложению корректно работать без ссылок на несуществующие файлы или классы.
Чтобы добавить пространство имён в ваш класс, просто используйте директиву namespace
, как показано в примере ниже:
<?php
namespace Database\Seeders;
// Ваш код здесь
После того как вы добавили пространство имён, не забудьте выполнить команду composer dump-autoload
, чтобы обновить автозагрузку классов. Это обеспечит корректное подключение вашего класса в проекте.
Как вывести сырой SQL-запрос в виде строки из билдера запросов?
Как создать пользовательские вспомогательные функции в Laravel
Форматирование часового пояса для даты Carbon
Laravel валидация: проверка существования с условием по дополнительному столбцу - пользовательское правило валидации
В Laravel, как получить список всех файлов в публичной папке?