Как только я набираю команду php artisan db:seed
.
Я получаю Error Like:
[ReflectionException]
Класс UserTableSeeder не существует
root@dd-desktop:/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' => 'chris@scotch.io', '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(); } }
Я ссылаюсь на эту ссылку для разработки и разработки страницы входа. Пожалуйста, помогите мне решить эту проблему. Благодарю.
Выполните 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
, и теперь он должен работать как ветер !
Если composer dump-autoload
не найдена, просто включите эту опцию composer config -g -- disable-tls true
.
Автоответчик composer dump-autoload
должен исправить это.
У меня была эта проблема, и я мог ее решить, выполнив php artisan config:cache
. Проблема заключалась в том, что я уже запустил эту команду раньше, а позже включил некоторые новые классы сеялок. Кэшированные конфигурации не распознавали новые классы. Так что работа над этой командой снова сработала.
Если вы видите, что вы делаете частые изменения, чтобы включить новые классы сеялок, подумайте о запуске php artisan config:clear
. Это позволит вам сделать столько изменений, сколько захотите, а затем после тестирования вы снова сможете запустить config:cache
чтобы все снова работало оптимально.
По моему опыту, это будет отображаться большую часть времени, когда класс, который вы пытаетесь вызвать, имеет некоторые ошибки и не может быть скомпилирован. Убедитесь, что класс, который не отображается, может быть выполнен самостоятельно.
попробуйте использовать следующую команду
php artisan db:seed --class=DatabaseSeeder
Вам нужно назначить его пространству имен для его поиска.
namespace App\Http\Controllers;
Я не пишу как ответ на этот вопрос. Но я хочу помогать другим, если они сталкиваются с такой же ошибкой, но ответы, упомянутые здесь, не работают. Я также попробовал все решения, упомянутые здесь. Но моя проблема заключалась в использовании пространства имен, которое я использовал. Путь был неправильным.
Используемое мной пространство имен:
namespace App\Http\Controllers;
Но на самом деле контроллер находится внутри папки с именем ' FrontEnd '
поэтому решение изменит пространство имен на:
namespace App\Http\Controllers\Frontend;
Когда он ищет файл класса сеялки, вы можете запустить компоновщик dump-autoload . Когда вы запустите его снова и он ищет модель, вы можете ссылаться на нее непосредственно в файле сеялки. Вот так,
use App\{Model};
Не строго связано с вопросом, но получил ошибку ReflectionException: Class config does not exist
Я добавил новую переменную .env
с пробелами в ней. Запуск php artisan config:clear
сказал мне, что любая переменная .env
с пробелами в ней должна быть окружена .env
s.
Было ли это и мое приложение заявлено, что он работает снова, нет необходимости в том, чтобы он был очищен, как все еще в разработке на Laravel Homestead (5.4)
Я воссоздал класс, и он сработал. Скопируйте все содержимое файла, удалите файл и запустите php artisan make:seeder ModelTableSeeder
. Потому что composer dump-autoload
не работал для меня.