"Наполнение БД тестовыми данными с помощью Factory и Seeder"

Андрей Игнатов
Игнатов Андрей
Founder & Techlead
10 мая 2026
29

При разработке Laravel-приложений часто требуется быстро заполнить базу тестовыми данными.

Laravel предоставляет для этого:

  • Seeder;
  • Factory;
  • Faker.

В этой статье разберём, как эффективно наполнять Laravel database тестовыми данными.


Что такое Laravel Seeder

Seeder — это класс для наполнения базы данных данными.

Создание:

php artisan make:seeder UserSeeder

Seeder появится в:

database/seeders

Пример Seeder

use App\Models\User;

User::create([
    'name' => 'Admin',
    'email' => 'admin@example.com',
]);

Запуск Seeder

php artisan db:seed

Запуск конкретного Seeder

php artisan db:seed --class=UserSeeder

Что такое Laravel Factory

Laravel factory автоматически генерирует fake-данные.

Создание factory:

php artisan make:factory PostFactory

Пример Factory

use Illuminate\Support\Str;

return [

    'title' => fake()->sentence(),

    'content' => fake()->text(),

    'slug' => Str::slug(fake()->sentence()),

];

Генерация моделей

Post::factory()->count(10)->create();

Factory и Seeder вместе

public function run(): void
{
    Post::factory(50)->create();
}

Faker в Laravel

Laravel использует Faker для генерации:

  • email;
  • телефонов;
  • текстов;
  • дат;
  • URL;
  • изображений.

Связанные модели

Factory отлично работает со связями Eloquent.

Пример:

User::factory()
    ->hasPosts(5)
    ->create();

State в Factory

Post::factory()->state([
    'published' => true,
]);

Factory Sequence

->sequence(
    ['status' => 'draft'],
    ['status' => 'published']
)

Seed production данных

Seeder полезны не только для тестов.

Часто через seed создают:

  • роли;
  • permissions;
  • настройки;
  • системные данные.

migrate:fresh --seed

Полезная команда:

php artisan migrate:fresh --seed

Она:

  • удаляет таблицы;
  • запускает migration;
  • выполняет seeders.

Лучшие практики Seeder и Factory

Рекомендуется:

  • хранить fake data отдельно;
  • использовать factories для тестов;
  • создавать reusable states;
  • разделять production и dev seeders.

Laravel Factory в тестировании

Factories активно используются в:

  • feature tests;
  • unit tests;
  • API tests.

Это ускоряет написание тестов и уменьшает boilerplate.


Итоги

Laravel Seeder и Factory значительно ускоряют разработку.

С их помощью можно:

  • быстро наполнять БД;
  • тестировать приложение;
  • создавать realistic fake data;
  • автоматизировать подготовку окружения.

Это один из самых удобных инструментов Laravel ecosystem.

👉 Заказать бесплатный экспресс-аудит проекта

Задать вопрос

Если у вас возник технический вопрос по нашим статьям или появилась потребность в профессиональной разработке сложного веб-проекта — оставьте свои контакты. Техлид «Команды-А» свяжется с вами, чтобы проконсультировать и помочь найти оптимальное решение.

Нажимая кнопку, вы соглашаетесь с политикой обработки персональных данных.