Реалізуйте умовні міграції в Laravel за допомогою нового методу shouldRun()

2
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Laravel представляє новий метод shouldRun(), який спрощує управління міграціями з функціональними флагами. Завдяки цій елегантній функції ви зможете легко налаштовувати міграції відповідно до активності певних функцій, покращуючи процес розгортання на різних етапах. Чи готові ви дізнатися, як зробити свої міграції більш адаптивними? Читайте далі, щоб розкрити всі переваги цього потужного методу

Laravel вирішує проблему управління міграціями з використанням флагів функцій завдяки новому методу shouldRun(). Ця елегантна можливість дозволяє виконувати міграції умовно, залежно від стану застосунку, спрощуючи поетапне впровадження та управління функціями.

При впровадженні флагів функцій або поетапних розгортань певні зміни в базі даних повинні застосовуватися лише тоді, коли активні конкретні функції. Раніше розробники зверталися до складних обхідних рішень або ручного відстеження міграцій. Метод shouldRun() пропонує просте рішення, дозволяючи міграціям визначати власні критерії виконання:

return new class extends Migration
{
    public function shouldRun()
    {
        return Feature::active(Bookings::class);
    }
 
    public function up()
    {
        Schema::create('bookings', function (Blueprint $table) {
            $table->id();
            $table->string('location');
            $table->timestamps();
        });
    }
 
    public function down()
    {
        Schema::dropIfExists('bookings');
    }
}

Ця міграція виконується тільки коли функція 'Bookings' активна. При її неактивності міграція пропускається без помилок, і жоден запис не з'являється в таблиці міграцій.

Метод виявляється особливо корисним для багатокористувацьких застосунків або поступових розгортань функцій:

// 2023_06_22_create_notification_tables.php
return new class extends Migration
{
    public function shouldRun()
    {
        // Цю міграцію виконувати лише для середовищ або орендарів
        // з увімкненою системою сповіщень
        return config('features.advanced_notifications') === true;
    }
 
    public function up()
    {
        Schema::create('notification_templates', function (Blueprint $table) {
            $table->id();
            $table->string('channel');
            $table->json('content');
            $table->timestamps();
        });
 
        Schema::create('notification_delivery', function (Blueprint $table) {
            $table->id();
            $table->string('recipient');
            $table->json('metadata');
            $table->timestamps();
        });
    }
 
    public function down()
    {
        Schema::dropIfExists('notification_delivery');
        Schema::dropIfExists('notification_templates');
    }
};

Метод shouldRun() працює послідовно з командами migrate та rollback. Міграції, які пропущені під час міграції, також пропустяться під час операцій скасування, зберігаючи цілісність бази даних.

Впроваджуючи метод shouldRun(), розробники створюють більш адаптивні міграції, чутливі до контексту, які відповідають вимогам застосунку, що робить управління функціями та прогресивні стратегії розгортання більш ефективними та зручними

Популярні

Logomark Logotype

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel

Logomark Logotype

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!