laravel

Laravel Как да добавите колона към съществуваща таблица

Laravel Как да добавите колона към съществуваща таблица

Проблем

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

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

Въпреки че това не е нашият фокус, мисля, че беше важно да заявим това, преди да се насочим към проблема си.

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

Така че в този момент те вече направиха нещо като:

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

Схема :: създаване ('организации', функция ($ таблица)
$ таблица-> приращения ('id');
$ table-> string ('name') -> nullable ();
$ table-> text ('about') -> nullable ();
);

Това ще създаде нова таблица за тях. И за да направите това чисто, трябва също да добавите функцията надолу и просто да пуснете цялата си маса в този случай. Функцията надолу ще се стартира, когато искате да върнете миграцията назад.

Прескачайки всичко това, истинският проблем се появява, когато забравят една колона и искат да я добавят след това, за да създадат нов миграционен файл (клас), опитайте да стартирате нещо като:

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

Схема :: създаване ('организации', функция ($ таблица)
$ table-> integer ('size') -> nullable ();
);

Те се надяват да добавят нов размер на колоната към съществуващата таблица.

Сега нека видим какво се случва и как да предотвратим това да се повтори.

Решение

Основният проблем тук е това, което новите разработчици често са склонни да пропуснат да забележат кое е статичното име на метода на Схемата . Създаването използвате само когато първоначално създавате таблицата си. Ако трябва да актуализирате таблицата си по всяко време, вместо това искате да използвате таблица.

Така че реалната функция нагоре трябва да бъде следната:

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

Схема :: таблица ('организации', функция ($ таблица)
$ table-> integer ('size') -> nullable ();
);

И функцията надолу ще бъде следната:

публична функция надолу ()

Схема :: таблица ('организации', функция ($ таблица)
$ таблица-> dropColumn ('размер');
);

Моето лично предложение към вас е, че след като създадете своя нов (променящ) файл за миграция, направете следното:

Още един съвет

Това ще бъде полезно на по-късен етап, ако искате да автоматизирате внедряването си и вашият скрипт трябва да изпълни възстановяване.

Друг съвет, който мога да ви дам, е да планирате къде искате да поставите вашата колона. Просто като направите това, Laravel ще постави новата ви колона в края, вероятно след колоната updated_at. (Повечето таблици имат това)

Искате да използвате метод след, така че окончателният ви код да изглежда така:

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

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

В този случай Laravel ще постави новата ви колона веднага след колоната с име, така че да изглежда добре и да е организирана много по-добре.

Как да разработите игра на Linux
Преди десетилетие не много потребители на Linux биха прогнозирали, че любимата им операционна система един ден ще бъде популярна игрална платформа за ...
Пристанища с отворен код на търговски игрални машини
Безплатни разширения на играта с отворен код и междуплатформени игри могат да се използват за възпроизвеждане на стари, както и някои от доста скорошн...
Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...