Как расширить класс Seeder?
Пытаюсь добавить свой класс CustomSeeder, который наследует Illuminate\Database\Seeder из папки /database/seeds, к примеру чтобы добавить общие для всех сидеров свойства.
class CustomSeeder extends Seeder {
public $someParams;
и теперь нужно чтобы все классы наследовались от нового класса
class SomeSeeder extends CustomSeeder {
public function run() {
но во время миграции выдаёт такую ошибку:
The use statement with non-compound name 'CustomSeeder' has no effect
Как это правильней сделать подскажите пожалуйста?
P.S.
AppServiceProvider
public function register() {
$this->app->bind('CustomSeeder', '?');
}
P.S.
database\seeds\CustomSeeder.php
use Illuminate\Database\Seeder;
class CustomSeeder extends Seeder {
// public $test = 'test1';
public function run() {
echo 'Running seeding for ' . __CLASS__ . PHP_EOL;
parent::run();
}
}
database\seeds\MarkSeeder.php
class MarkSeeder extends CustomSeeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run() {
echo 'Running seeding for ' . __CLASS__ . PHP_EOL;
parent::run();
}
}
database\seeds\DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(MarkSeeder::class);
}
}
php artisan migrate:fresh --seed
в результате ошибка теперь такая:
`Symfony\Component\ErrorHandler\Error\FatalError
Class 'CustomSeeder' not found`
из сервис-провайдера удалил лишнее
Ответы (1 шт):
Всё работает как указано в документации:
- Скачиваем установщик
composer global require laravel/installer - Создаем Laravel
composer create-project --prefer-dist laravel/laravel blog - Ставим настройки в .env для связи с БД
- Базовый Seeder:
use Illuminate\Database\Seeder;
class BaseSeeder extends Seeder
{
public function run()
{
echo 'Running for class ' . __CLASS__ . PHP_EOL;
}
}
- Два базовых DerivedSeeder1 & DerivedSeeder2 через
php artisan make:seeder DerivedSeeder1 && php artisan make:seeder DerivedSeeder2
- Внутри наследуем от BaseSeeder:
class DerivedSeeder1 extends BaseSeeder
{
public function run()
{
echo 'Running seeding for ' . __CLASS__ . PHP_EOL;
parent::run();
}
}
class DerivedSeeder2 extends BaseSeeder
{
public function run()
{
echo 'Running seeding for ' . __CLASS__ . PHP_EOL;
parent::run();
}
}
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call(DerivedSeeder1::class);
$this->call(DerivedSeeder2::class);
}
}
- Кэшируем конфиг
php artisan config:cache - Дамп автозагрузки
composer dump-autoloadна всякий случай - Запускаем миграции
php artisan migrate:refresh --seed - Результат:
- Структура проекта как изначально созданная при установке:



