0

Ошибка "Класс 'UserTableSeeder' не существует" - Laravel 5.0 [php artisan db:seed]

10

Проблема с запуском сидера в 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 ответ(ов)

0

Иногда код может быть правильным, но вам нужно выполнить следующую команду, чтобы запустить команду сидирования.

Сначала выполните эту команду:

composer dumpautoload

Затем запустите сидер:

php artisan db:seed --class=CreateUsersTable

Надеюсь, это поможет!

0

Попробуйте заменить

$this->call('UserTableSeeder');

на

$this->call(UserTableSeeder::class);

и затем выполните команду

composer dump-autoload

Это должно помочь устранить проблему.

0

Когда вы изменяете или удаляете файл контроллера или любой другой файл, необходимо убедиться, что он удален из всех мест в коде. Чтобы обновить автозагрузку классов, выполните следующую команду:

composer dump-autoload

Эта команда пересоберет файл автозагрузки, что позволит вашему приложению корректно работать без ссылок на несуществующие файлы или классы.

0

Чтобы добавить пространство имён в ваш класс, просто используйте директиву namespace, как показано в примере ниже:

<?php

namespace Database\Seeders;
// Ваш код здесь

После того как вы добавили пространство имён, не забудьте выполнить команду composer dump-autoload, чтобы обновить автозагрузку классов. Это обеспечит корректное подключение вашего класса в проекте.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь