<? phpukraine ДОКУМЕНТАЦІЯ
Пошук по платформі
Документація українською

Переклад офіційної документації українською. Кожен розділ показує стан готовності: недоперекладене позначене відкрито, а не приховане.

ВЕРСІЯ
АКТУАЛЬНА Актуальний реліз. Переклад наздоганяє оригінал, розділи з низьким відсотком позначені у змісті.
БАЗА ДАНИХ · ПЕРЕКЛАДЕНО оновлено 15 вересня 2026

Сідери · Laravel

Вступ

Laravel дозволяє наповнювати базу даних тестовими даними за допомогою класів-сідерів. Усі класи сідерів зберігаються в каталозі database/seeders. За замовчуванням для вас визначено клас DatabaseSeeder. У ньому можна скористатися методом call, щоб запускати інші класи сідерів і контролювати порядок наповнення.

Примітка Захист від масового призначення автоматично вимикається під час наповнення бази даних.

Написання сідерів

Щоб згенерувати сідер, виконайте Artisan-команду make:seeder. Усі сідери, згенеровані фреймворком, потраплять у каталог database/seeders:

php artisan make:seeder UserSeeder

За замовчуванням клас сідера містить лише один метод: run. Цей метод викликається під час виконання Artisan-команди db:seed. Усередині методу run ви можете вставляти дані в базу як забажаєте. Для ручної вставки даних підійде конструктор запитів, або ж скористайтеся фабриками моделей Eloquent.

Наприклад, змінімо стандартний клас DatabaseSeeder і додаймо до методу run вставку рядка в базу:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder
{
    /**
     * Запустити сідери бази даних.
     */
    public function run(): void
    {
        DB::table('users')->insert([
            'name' => Str::random(10),
            'email' => Str::random(10).'@example.com',
            'password' => Hash::make('password'),
        ]);
    }
}

Примітка У сигнатурі методу run можна вказати через type-hint будь-які потрібні залежності. Вони автоматично будуть отримані через контейнер сервісів Laravel.

Використання фабрик моделей

Звісно, вручну задавати атрибути для кожної моделі незручно. Замість цього скористайтеся фабриками моделей, щоб зручно генерувати великі обсяги записів. Спершу перегляньте документацію про фабрики моделей, щоб дізнатися, як їх визначати.

Наприклад, створімо 50 користувачів, кожен із яких має один повʼязаний допис:

use App\Models\User;

/**
 * Запустити сідери бази даних.
 */
public function run(): void
{
    User::factory()
        ->count(50)
        ->hasPosts(1)
        ->create();
}

Виклик додаткових сідерів

У класі DatabaseSeeder можна використовувати метод call, щоб виконувати додаткові класи сідерів. Метод call дозволяє розбити наповнення бази на кілька файлів, аби жоден клас сідера не розростався надміру. Метод call приймає масив класів сідерів, які треба виконати:

/**
 * Запустити сідери бази даних.
 */
public function run(): void
{
    $this->call([
        UserSeeder::class,
        PostSeeder::class,
        CommentSeeder::class,
    ]);
}

Вимкнення подій моделей

Під час наповнення бази вам може знадобитися заборонити моделям надсилати події. Цього можна досягти за допомогою трейту WithoutModelEvents. Трейт WithoutModelEvents гарантує, що жодна подія моделі не буде надіслана, навіть якщо додаткові класи сідерів виконуються через метод call:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;

class DatabaseSeeder extends Seeder
{
    use WithoutModelEvents;

    /**
     * Запустити сідери бази даних.
     */
    public function run(): void
    {
        $this->call([
            UserSeeder::class,
        ]);
    }
}

Запуск сідерів

Щоб наповнити базу даних, виконайте Artisan-команду db:seed. За замовчуванням команда db:seed запускає клас Database\Seeders\DatabaseSeeder, який своєю чергою може викликати інші класи сідерів. Проте за допомогою опції --class ви можете вказати конкретний клас сідера для окремого запуску:

php artisan db:seed

php artisan db:seed --class=UserSeeder

Наповнити базу даних також можна командою migrate:fresh разом з опцією --seed: вона видалить усі таблиці й повторно виконає всі міграції. Ця команда стане в пригоді для повної перебудови бази даних. Опція --seeder дозволяє вказати конкретний сідер для запуску:

php artisan migrate:fresh --seed

php artisan migrate:fresh --seed --seeder=UserSeeder

Примусовий запуск сідерів у продакшені

Деякі операції наповнення можуть змінити або знищити дані. Щоб захистити вас від запуску команд наповнення на продакшен-базі, у середовищі production перед виконанням сідерів буде запитано підтвердження. Щоб запустити сідери без запиту, скористайтеся прапорцем --force:

php artisan db:seed --force
ЯК ЦЯ СТОРІНКА ВИГЛЯДАЄ В ПОШУКУ
phpukraine.com/docs/laravel/seeding
Сідери | Документація Laravel українською
Сідери у Laravel 13.x: переклад офіційної документації українською. Оновлено 15 вересня 2026. Приклади коду, пояснення та посилання на питання зі співбесід.
Стан перекладу

Перекладаємо з офіційної документації, розділ за розділом, і не ховаємо недоперекладене. Помітили неточність у терміні чи реченні: напишіть, виправимо.

90%
Готовності
10
У роботі
0
Ще не перекладено
Глосарій термінів