it-roy-ru.com

ReflectionException: класс ClassName не существует - Laravel

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

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

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

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

Здесь моя страница UserTableSeeder.php & DatabaseSeeder.php

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

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

28
Nana Partykar

Выполните 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, и теперь он должен работать как breeze!

Редактировать @JMSamudio

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

90
Ahmad Baktash Hayeri

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

10
Kamaro Lambert

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

8
fsavina

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

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

4
Sriram Ranganathan

У меня та же проблема с 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'
    ];
}
3
Luciano Braga

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

2
Jaroslav Klimčík

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

Пространство имен, которое я использовал:

namespace App\Http\Controllers;

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

поэтому решение состоит в том, чтобы изменить namespace на:

namespace App\Http\Controllers\Frontend;
1
Abhi

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

php artisan db:seed --class=DatabaseSeeder
1
easycodingclub

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

namespace App\Http\Controllers;
1
G-Man

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

0
М.Б.

обновление композитора 

Над Командой работают на меня.

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

0
KNK

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

use App\{Model};
0
Kent Aguilar
composer dump-autoload 

это исправит

0
Richard kortby

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

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

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

0
Scott Brown

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

0
Epsilon47