Як оновити базу даних Laravel без видалення всіх таблиць

Перекладено ШІ 0 Laravel News 10 червня, 2026

Прагнете оновити структуру бази даних Laravel, зберігши при цьому важливі тестові акаунти чи засіяні дані? Дізнайтеся, як пакет Custom Fresh дозволяє вибірково залишати потрібні таблиці під час виконання міграцій.

Стандартна команда Laravel migrate:fresh видаляє всі таблиці перед повторним запуском міграцій. Це зручно, поки вам не знадобиться зберегти певні дані: наприклад, наповнення (seed data), яке не хочеться генерувати заново, або тестові акаунти. Пакет Custom Fresh від Mahmoud Ramadan вирішує цю проблему, додаючи команду fresh:custom, яка оновлює базу даних, зберігаючи обрані таблиці.

# Як обрати таблиці для збереження

Припустимо, ви розробляєте сервіс передплат і постійно змінюєте структуру бази, але хочете залишити тестові профілі або дані в таблиці plans. Потрібні назви можна вказати через кому як аргумент або скористатися прапорцем --keep. Обидва варіанти працюють однаково:

php artisan fresh:custom users,plans
 
php artisan fresh:custom --keep=users,plans

Усі інші таблиці буде видалено, а міграції запущено заново. Так ваші дані залишаться на місці, поки решта схеми оновлюється з нуля.

# Glob-патерни для групування таблиць

Пакет Cashier створює таблиці subscriptions та subscription_items, і перелічувати кожну вручну буває втомливо. Custom Fresh підтримує glob-патерни: символ зірочки в кінці дозволяє вибрати всі таблиці зі спільним префіксом:

php artisan fresh:custom "users,plans,subscription_*"

# Попередній перегляд перед виконанням

Оскільки команда видаляє дані, ви можете заздалегідь перевірити список таблиць, які буде очищено або збережено. Прапорець --explain виведе детальний звіт без внесення змін у базу:

php artisan fresh:custom users,plans,subscription_* --explain

Також можна вказати конкретне підключення за допомогою --database — це зручно, якщо частина даних зберігається в окремій базі:

php artisan fresh:custom monthly_revenue --database=analytics
Скриншот команди fresh:custom
Демонстрація роботи Artisan-команди fresh:custom із прапорцем --explain та без нього

# Конфігурація та події

В опублікованому файлі конфігурації можна задати налаштування за замовчуванням. Таблиці в always_keep зберігатимуться автоматично, параметр patterns дозволяє зафіксувати правила пошуку, а confirm_in визначає середовища, де команда вимагатиме підтвердження перед видаленням:

return [
    'always_keep' => ['users', 'plans'],
    'patterns'    => ['subscription_*'],
    'confirm_in'  => ['staging', 'production'],
];

Під час роботи команда генерує три події для логування або додаткових дій: RefreshingDatabase (перед видаленням), TablesDropped (після видалення) та DatabaseRefreshed (після завершення міграцій).

# Встановлення

Встановіть пакет за допомогою Composer:

composer require ramadan/custom-fresh

Custom Fresh потребує PHP 8.2 або вище та підтримує Laravel версій від 10 до 13. Документація та вихідний код доступні на GitHub.

Популярні

Інше, що варто прочитати

19 Оновлено 10 червня, 2026

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

16 Оновлено 10 червня, 2026

Журнал аудиту в Laravel

Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту

53 Оновлено 10 червня, 2026

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

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