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

Питання на співбесіді: Seeder

Найпопулярніші питання з реальних Laravel/PHP співбесід для всіх рівнів

1 питання

Seeding - це процес наповнення бази даних початковими або тестовими даними. Laravel робить це через класи-сидери, які лежать у директорії database/seeders. Зручно для довідників (країни, ролі), демо-контенту та локальної розробки чи тестів.

Створити сидер:

php artisan make:seeder PostSeeder

Логіку вставки описують у методі run() - або через фабрики, або напряму через Query Builder:

class PostSeeder extends Seeder
{
    public function run(): void
    {
        Post::factory()->count(50)->create(); // через фабрику

        // або напряму
        DB::table('roles')->insert([
            ['name' => 'admin'],
            ['name' => 'user'],
        ]);
    }
}

Реєстрація: сидери викликають у DatabaseSeeder::run(), щоб запускати їх разом:

public function run(): void
{
    $this->call([RoleSeeder::class, PostSeeder::class]);
}

Запуск:

  • php artisan db:seed - виконує DatabaseSeeder.
  • php artisan db:seed --class=PostSeeder - конкретний сидер.
  • php artisan migrate:fresh --seed - перестворити БД і засіяти.

Докладніше в документації: Seeding