Как расширить класс 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 шт):

Автор решения: Daniel Protopopov

Всё работает как указано в документации:

  1. Скачиваем установщик composer global require laravel/installer
  2. Создаем Laravel composer create-project --prefer-dist laravel/laravel blog
  3. Ставим настройки в .env для связи с БД
  4. Базовый Seeder:
use Illuminate\Database\Seeder;

class BaseSeeder extends Seeder
{
    public function run()
    {
        echo 'Running for class ' . __CLASS__ . PHP_EOL;
    }
}
  1. Два базовых DerivedSeeder1 & DerivedSeeder2 через

php artisan make:seeder DerivedSeeder1 && php artisan make:seeder DerivedSeeder2

  1. Внутри наследуем от 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);
    }
}
  1. Кэшируем конфиг php artisan config:cache
  2. Дамп автозагрузки composer dump-autoload на всякий случай
  3. Запускаем миграции php artisan migrate:refresh --seed
  4. Результат:

Результат

  1. Структура проекта как изначально созданная при установке:

Структура проекта

→ Ссылка