laravel

Laravel Як додати стовпець до існуючої таблиці

Laravel Як додати стовпець до існуючої таблиці

Проблема

Додавання нових стовпців до міграцій Laravel - звична справа. Програми призначені для масштабування, а це означає, що додавання нових функцій додатково розвиває вашу програму.

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

Хоча це не наша увага, я думаю, було важливо сказати, що перед тим, як ми розглянемо нашу проблему.

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

Тож на цей момент вони вже зробили щось на зразок:

публічна функція вгору ()

Схема :: create ('organization', function ($ table)
$ таблиця-> прирости ('id');
$ table-> string ('name') -> nullable ();
$ table-> text ('about') -> nullable ();
);

Це створить для них нову таблицю. І щоб зробити це чистим, вам слід також додати функцію вниз і в цьому випадку просто опустити всю таблицю. Функція вниз буде запущена, коли ви хочете відмовити міграцію.

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

публічна функція вгору ()

Схема :: create ('organization', function ($ table)
$ table-> integer ('size') -> nullable ();
);

Вони сподіваються додати новий розмір стовпця до існуючої таблиці.

А тепер давайте подивимося, що відбувається і як запобігти цьому більше.

Рішення

Основна проблема тут полягає в тому, що нові розробники часто, як правило, пропускають помітити, яка статична назва методу є схемою . Ви використовуєте create лише тоді, коли ви спочатку створюєте свою таблицю. Якщо вам потрібно будь-коли оновити таблицю в будь-який час, ви хочете використовувати таблицю.

Тож реальна функція вгору повинна виглядати так:

публічна функція вгору ()

Schema :: table ('організації', функція ($ table)
$ table-> integer ('size') -> nullable ();
);

І функція вниз буде виглядати так:

публічна функція знижена ()

Schema :: table ('організації', функція ($ таблиця)
$ table-> dropColumn ('розмір');
);

Я особисто вам пропоную, щоб після створення нового (змінного) файлу міграції зробили наступне:

Ще одна порада

Це стане в нагоді пізніше, якщо ви хочете автоматизувати розгортання, а сценарію потрібно виконати відкат.

Ще одна порада, яку я можу вам дати, - це спланувати, де ви хочете розмістити свою колонку. Просто виконавши це, Laravel розмістить ваш новий стовпець в кінці, можливо, після стовпця updated_at. (У більшості таблиць це є)

Ви хочете використовувати метод після, щоб ваш остаточний код виглядав так:

публічна функція вгору ()

Schema :: table ('організації', функція ($ таблиця)
$ table-> integer ('size') -> after ('name') -> nullable ();
);

У цьому випадку Laravel розмістить ваш новий стовпець відразу після стовпця імен, щоб він виглядав гарно та впорядкований набагато краще.

Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...