#laravel #factory #laravel-8
#laravel #фабрика #laravel-8
Вопрос:
Я обновляю свой проект laravel 7.x до 8.
На данный момент я придерживаюсь устаревших фабрик, поскольку у меня их много, и они используются в тестах и тому подобном, поэтому потребуется вечность, чтобы перейти на новую структуру классов.
Проблема в том, что я, похоже, не могу запускать свои сеялки или тесты локально (у которых есть устаревшие фабрики).
Я импортировал новые laravel/legacy-factories
и установил пространства имен в своих сеялках и обновил файл composer.json. Но каждый раз, когда я пытаюсь запустить сеялку или тест, я получаю сообщение об ошибке
Unable to locate factory for [AppModelsUser] (or any other model)
Я удалил classmap
из composer.json
, как указано в документах, но попробовал его с этим и без него.
Я попытался полностью удалить все кэши и запустить composer install
без радости.
У кого-нибудь еще была эта проблема?
ОБНОВЛЕНИЕ — Вот мой файл composer.json. Некоторые строки были удалены.
{
"require": {
"php": ">=7.4",
"bacon/bacon-qr-code": "^2.0.2",
"browner12/helpers": "^3.2",
"dg/mysql-dump": "^1.5",
"doctrine/dbal": "^2.11",
"fzaninotto/faker": "~1.9",
"graham-campbell/github": "^9.4.0",
"graylog2/gelf-php": "^1.6",
"guzzlehttp/guzzle": "^6.5.5",
"jeremykendall/php-domain-parser": "^5.7",
"laravel/framework": "^8.0",
"laravel/helpers": "^1.3",
"laravel/legacy-factories": "^1.0",
"laravel/scout": "^8.3",
"laravel/tinker": "^2.4",
"laravel/ui": "^3.0",
"league/csv": "^9.6",
"mandrill/mandrill": "^1.0",
"mariuzzo/laravel-js-localization": "^1.7",
"php-http/guzzle6-adapter": "^2.0.1",
"phpseclib/phpseclib": "^2.0.29",
"pragmarx/google2fa": "^8.0",
"predis/predis": "^1.1",
"segmentio/analytics-php": "^1.5",
"spatie/fractalistic": "^2.9",
"zachleigh/laravel-property-bag": "^1.4"
},
"require-dev": {
"laravel/dusk": "^6.8",
"mockery/mockery": "1.4.2",
"phpunit/phpunit": "^9.0",
"filp/whoops": "~2.7"
},
"autoload": {
// also tried with the classmap here
"psr-4": {
"Database\Seeders\": "database/seeders/",
// Also tried with the factories namespace here
},
"files": [
"app/helpers.php"
]
},
"scripts": {
"post-root-package-install": [
"php -r "file_exists('.env') || copy('.env.example', '.env');""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\Foundation\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\Foundation\ComposerScripts::postUpdate",
"php artisan optimize"
],
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
},
"extra": {
"laravel": {
"dont-discover": [
"laravel/dusk"
]
}
}
}
Комментарии:
1. Можете ли вы опубликовать свои
composer.json
?2. @Jerodev добавлен по запросу.
Ответ №1:
В конце концов мне удалось решить эту проблему, просто удалив файлы packages.php
и services.php
из каталога начальной загрузки, а затем composer dump-autoload
выполнив трюк.