#php #laravel #laravel-8
#php #laravel #laravel-8
Вопрос:
Я разработал пакет для api в laravel.7.x. Этот api поставляется как пакет для laravel. Теперь я хочу обновить его до laravel 8. К сожалению, я не могу заставить сеялки работать.
все сеялки пакетов должны выполняться после
php artisan migrate:fresh --seed
команда.
По-видимому, классы сеялок не найдены. например Target class [PostSeeder] does not exist.
Но он существует, он даже в том же пространстве имен.
Теперь я пытаюсь начать с DatabaseSeeder, и этот найден. Но оттуда другие сеялки не могут быть запущены.
У кого-нибудь есть идея, что можно попробовать, или есть подсказка или фрагмент кода для этой проблемы?
Заранее большое спасибо.
Ответ №1:
хорошо, проблема решена.
Используйте новый способ включения фабрик в laravel 8, т.Е. Модели имеют эту новую функцию:
use AcmeYourPackageDatabaseFactoriesPostFactory;
use IlluminateDatabaseEloquentFactoriesHasFactory;
protected static function newFactory()
{
return PostFactory::new();
}
и обязательно назовите это как:
enter $this->call('AcmeYourPackageDatabaseSeedersPostSeeder');
после этого убедитесь, что ваше пространство имен и пути к классам заданы правильно.