Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як наповнювати базу правдоподібними даними через фабрики в сідерах?

Сідер описує, скільки й яких даних потрібно, а фабрика - як виглядає один запис.

public function run(): void
{
    User::factory()
        ->count(50)
        ->has(Post::factory()->count(3)->published())
        ->create();

    User::factory()->admin()->create(['email' => 'admin@example.test']);
}

Що робить дані корисними для розробки:

  • стани фабрики (published(), admin(), suspended()) - видно крайні випадки, а не лише «середній» запис;
  • зв'язки через has() і for() - сторінки показують реальну структуру;
  • Sequence - чергування значень: половина активних, половина ні;
  • відомий обліковий запис для входу - з фіксованим email і паролем з .env.example.

Відтворюваність: fake()->seed(1234) на початку робить згенеровані дані однаковими між запусками - зручно, коли багу треба відтворити на тих самих даних.

Швидкість: тисячі записів через create() повільні, бо кожен - окремий INSERT з подіями. Для великих обсягів беруть WithoutModelEvents, транзакцію навколо сідування або insert() пачками з масивів, згенерованих make()->toArray().

Докладніше в документації: Використання фабрик моделей

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання