ReflectionException: Class ClassName не существует - Laravel

Как только я наберу команду php artisan db:seed.

Я получаю Ошибка. Как:

[ReflectionException]
    Класс UserTableSeeder не существует

[email protected]:/opt/lampp/htdocs/dd/laravel# php artisan db:seed

Здесь, есть мои UserTableSeeder.php и DatabaseSeeder.php Page

UserTableSeeder.php

<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class UserTableSeeder extends Seeder
{    
    public function run()
    {
        DB::table('users')->delete();
        User::create(array(
        'name'     => 'Chris Sevilleja',
        'username' => 'sevilayha',
        'email'    => '[email protected]',
        'password' => Hash::make('awesome'),
        ));
    }    
}

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();

        Eloquent::unguard();
        $this->call('UserTableSeeder');

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

        //Model::reguard();
    }
}

Я ссылаюсь на ссылку , чтобы спроектировать и развить страницу входа. Пожалуйста, помогите мне решить эту проблему. Спасибо.

Ответ 1

Выполните команду composer update, затем composer dump-autoload.

Если это не решит проблему, измените classmap в файле composer.json так, чтобы он содержал относительный путь к вашим файлам php:

"autoload-dev": {
    "classmap": [
        "tests/TestCase.php",
        "database/seeds/UserTableSeeder.php" //include the file with its path here
    ]
}, /** ... */

и вскоре после этого выполните composer dump-autoload, и теперь он должен работать как ветерок!

Редактировать с помощью @JMSamudio

Если composer dump-autoload не найден, просто включите эту опцию composer config -g -- disable-tls true.

Ответ 2

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

Ответ 3

A composer dump-autoload должен исправить его.

Ответ 4

У меня была эта проблема, и я смог ее решить, выполнив php artisan config:cache. Проблема заключалась в том, что я уже запустил эту команду раньше, а позже включил некоторые новые классы сеялок. Кэшированные конфигурации не распознавали новые классы. Так что эта команда снова работала.

Если вы видите, что часто делаете частые изменения, чтобы включать новые классы сеялок, рассмотрите возможность запуска php artisan config:clear. Это позволит вам сделать столько изменений, сколько захотите, а затем после тестирования вы можете снова запустить config:cache, чтобы сделать работу снова оптимальной.

Ответ 5

У меня та же проблема с class. Я попробовал composer dump-autoload и php artisan config:clear но это не решило мою проблему.

Тогда я решил прочитать мой код, чтобы найти проблему, и я нашел проблему. Проблемой в моем случае была пропущенная запятая в моем классе. Смотрите мой код модели:

{
    protected
    $fillable = ['agente_id', 'matter_id', 'amendment_id', 'tipo_id'];

    public
    $rules = [
        'agente_id' => 'required', // <= See the comma
        'tipo_id' => 'required'
    ];

    public
    $niceNames = [
        'agente_id' => 'Membro', // <= This comma is missing on my code
        'tipo_id' => 'Membro'
    ];
}

Ответ 6

По какой-то причине мне пришлось запустить composer dumpautoload -o. Обратите внимание на флаг -o означающий оптимизацию. Я понятия не имею, почему это работает только с этим, но попробуйте. Возможно, это кому-то поможет.

Ответ 7

попробуйте использовать следующую команду

php artisan db:seed --class=DatabaseSeeder

Ответ 8

Вам нужно назначить его пространству имен для его поиска.

namespace App\Http\Controllers;

Ответ 9

Я не пишу как ответ на этот вопрос. Но я хочу помогать другим, если они сталкиваются с такой же ошибкой, но ответы, упомянутые здесь, не работают. Я также попробовал все решения, упомянутые здесь. Но моя проблема заключалась в использовании пространства имен. Путь был неправильным.

Используемое мной пространство имен:

namespace App\Http\Controllers;

Но на самом деле контроллер находится внутри папки с именем 'FrontEnd'

поэтому решение изменит пространство имен на:

namespace App\Http\Controllers\Frontend;

Ответ 10

В случае использования psr-0 убедитесь, что имя класса не содержит подчеркивания.

Ответ 11

Когда он ищет файл класса сеялки, вы можете запустить компоновщик-дамп-автозагрузка. Когда вы запустите его снова, и он ищет модель, вы можете ссылаться на нее непосредственно в файле сеялки. Таким образом,

use App\{Model};

Ответ 12

Не строго связан с вопросом, но получил ошибку ReflectionException: Class config does not exist

Я добавил новую переменную .env с пробелами в ней. Запуск php artisan config:clear сказал мне, что любая переменная .env с пробелами в ней должна быть окружена " s.

Было ли это и мое приложение заявлено, что он работает снова, нет необходимости в настройке очистки, как еще в разработке на Laravel Homestead (5.4)

Ответ 13

Я воссоздал класс, и он сработал. Скопируйте все содержимое файла, удалите файл и запустите php artisan make:seeder ModelTableSeeder. Потому что composer dump-autoload не работал у меня.

Ответ 14

Вы можете попробовать написать app в use в верхнем регистре, так App. Работал на меня.

Ответ 15

composer dump-autoload 

это исправит

Ответ 16

composer update 

Выше команда работала на меня.

Всякий раз, когда вы делаете новую миграцию в la-ravel, вам нужно обновить classmap в файле composer.json.

Ответ 17

Обычно сообщение об ошибке ReflectionException: Class app does not exist появляется в тесте larval, когда вы забыли закрыть соединение.

если вы используете функцию setUp или tearDown в своем тесте, не забудьте закрыть соединение, вызвав parent::setUp и parent::tearDown

    public function setUp()
    {
        parent::setUp();
    }

    public function tearDown()
    {
        parent::tearDown();
    }

Ответ 18

composer dump-autoload
php artisan config:clear
php artisan cache:clear

Это обязательно сработает. Если нет, то вам нужно сделать

composer update

а затем, вышеупомянутые команды.

Ответ 19

Проверьте свою капитализацию!

Ваша хост-система (Windows или Mac) по умолчанию не учитывает регистр, и Homestead наследует это поведение. Ваш рабочий сервер, с другой стороны, чувствителен к регистру.

Всякий раз, когда вы получаете исключение ClassNotFound, проверьте следующее:

  1. орфография
  2. Пространства имен
  3. капитализация