calin-nicolai / seedergen
Laravel package for generating seeders
Requires
- php: ^8.0
- fakerphp/faker: ^1.9.1
- illuminate/database: ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
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 - Тип для данных, связанных с заголовками.
Условия для полей
-
minLength (int)
- Указывает минимальную длину строки.
- Пример:
'minLength' => 5,
-
maxLength (int)
- Указывает максимальную длину строки.
- Пример:
'maxLength' => 100,
-
prefix (string)
- Добавляет префикс к генерируемому значению.
- Пример:
'prefix' => 'Mr. ',
-
suffix (string)
- Добавляет суффикс к генерируемому значению.
- Пример:
'suffix' => ' Jr.',
-
values (array)
- Указывает фиксированные значения, из которых будет выбрано одно.
- Пример:
'values' => ['red', 'green', 'blue'],
-
numeric (bool)
- Если
true
, генерируется строка, состоящая только из цифр. - Пример:
'numeric' => true,
- Если
-
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
. Для этой таблицы можно сгенерировать сидер с
фейковыми данными следующим образом:
- Выполните команду:
php artisan seedergen:generate users --new --count=50
- Пакет сгенерирует сидер в файле
database/seeders/UsersSeeder.php
с 50 строками фейковых данных.