Настройка интеграции сеялок для разработки пакетов в Laravel 8

#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');
  

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