calin-nicolai/seedergen

Laravel package for generating seeders

dev-main 2025-06-16 17:18 UTC

This package is auto-updated.

Last update: 2025-06-16 17:18:37 UTC


README

Описание

Seedergen - это пакет для генерации сидеров в Laravel из существующих данных в базе или на основе конфигурации. Пакет поддерживает генерацию фейковых данных с использованием Faker, а также конфигурируемые сидеры для различных таблиц базы данных.

Установка

Для установки пакета выполните команду:

composer require calinnicolai/seedergen

Команды

seedergen:generate

Генерирует сидеры для указанной таблицы или для всех таблиц, если не указана таблица.

Аргументы:

  • table? (опционально) - Имя таблицы, для которой нужно создать сидер. По умолчанию создаются сидеры для всех таблиц.

Опции:

  • --new - Генерировать новые данные вместо использования существующих.
  • --count=10 - Количество генерируемых строк (только с флагом --new).

Пример:

php artisan seedergen:generate users --new --count=50

seedergen:scan

Сканирует базу данных и обновляет конфигурационный файл seedergen.php с таблицами и их отношениями.

Пример:

php artisan seedergen:scan

Конфигурация

Конфигурация пакета хранится в файле config/seedergen.php. Пример конфигурации:

return [
    'database' => [
        'users' => [
            'enabled' => true,
            'fields' => [
                'name' => 'string',
                'email' => 'string',
                'age' => 'integer',
            ],
            'relations' => [
                'role_id' => [
                    'related_table' => 'roles',
                    'type' => 'belongsTo',
                ],
            ],
        ],
    ],
];

Описание конфигурации таблиц

Конфигурация каждой таблицы в seedergen.php может включать следующие параметры:

1. enabled (bool)

  • Описание: Указывает, включена ли генерация сидера для этой таблицы.
  • Тип: bool
  • Пример:
    'enabled' => true,

2. fields (array)

  • Описание: Перечисление полей таблицы и их типов данных.
  • Тип: array
  • Пример:
    'fields' => [
        'name' => 'string',
        'email' => 'string',
        'age' => 'integer',
    ],

3. relations (array)

  • Описание: Отношения между таблицами. Описывает связи с другими таблицами, если они есть.
  • Тип: array
  • Пример:
    'relations' => [
        'role_id' => [
            'related_table' => 'roles', 
            'type' => 'belongsTo',
        ],
    ],

4. options (array)

  • Описание: Дополнительные настройки для генерации данных. Например, минимальная и максимальная длина строк, префиксы, суффиксы и т.д.
  • Тип: array
  • Пример:
    'options' => [
        'name' => [
            'minLength' => 5,
            'maxLength' => 50,
            'prefix' => 'Mr. ',
        ],
        'email' => [
            'minLength' => 10,
            'maxLength' => 100,
        ],
    ],

Типы данных и условия

Типы данных

  • string - Строка. Может быть использован для любых текстовых данных (имя, email и т.п.).
  • integer - Целое число.
  • boolean - Логическое значение (true или false).
  • json - JSON-структура.
  • date - Дата в формате YYYY-MM-DD.
  • timestamp - Дата и время в формате YYYY-MM-DD HH:MM:SS.
  • name - Тип для данных, связанных с именем (например, полное имя пользователя).
  • title - Тип для данных, связанных с заголовками.

Условия для полей

  1. minLength (int)

    • Указывает минимальную длину строки.
    • Пример:
      'minLength' => 5,
  2. maxLength (int)

    • Указывает максимальную длину строки.
    • Пример:
      'maxLength' => 100,
  3. prefix (string)

    • Добавляет префикс к генерируемому значению.
    • Пример:
      'prefix' => 'Mr. ',
  4. suffix (string)

    • Добавляет суффикс к генерируемому значению.
    • Пример:
      'suffix' => ' Jr.',
  5. values (array)

    • Указывает фиксированные значения, из которых будет выбрано одно.
    • Пример:
      'values' => ['red', 'green', 'blue'],
  6. numeric (bool)

    • Если true, генерируется строка, состоящая только из цифр.
    • Пример:
      'numeric' => true,
  7. structure (array)

    • Структура для генерации JSON-данных.
    • Пример:
      'structure' => [
          'address' => [
              'type' => 'string',
              'minLength' => 10,
              'maxLength' => 100,
          ],
      ],

Пример конфигурации для таблицы с дополнительными параметрами:

return [
    'database' => [
        'users' => [
            'enabled' => true,
            'fields' => [
                'name' => 'string',
                'email' => 'string',
                'age' => 'integer',
                'is_active' => 'boolean',
            ],
            'options' => [
                'name' => [
                    'minLength' => 5,
                    'maxLength' => 50,
                    'prefix' => 'Mr. ',
                ],
                'email' => [
                    'minLength' => 10,
                    'maxLength' => 100,
                ],
                'age' => [
                    'min' => 18,
                    'max' => 99,
                ],
            ],
            'relations' => [
                'role_id' => [
                    'related_table' => 'roles',
                    'type' => 'belongsTo',
                ],
            ],
        ],
    ],
];

Пример генерации сидера

Предположим, у нас есть таблица users с полями name, email, age. Для этой таблицы можно сгенерировать сидер с фейковыми данными следующим образом:

  1. Выполните команду:
php artisan seedergen:generate users --new --count=50
  1. Пакет сгенерирует сидер в файле database/seeders/UsersSeeder.php с 50 строками фейковых данных.