ларавел

Laravel Как добавить столбец в существующую таблицу

Laravel Как добавить столбец в существующую таблицу

Проблема

Добавление новых столбцов в ваши миграции Laravel - обычное дело. Приложения должны быть масштабируемыми, а это означает, что добавление новых функций способствует дальнейшему развитию вашего приложения.

Очень часто новым разработчикам Laravel необходимо запускать свои миграции, но они не уверены, что миграции могут откатываться и мигрировать несколько раз, ничего не нарушая.

Хотя это не наша цель, я думаю, что было важно заявить, что прежде чем мы перейдем к нашей проблеме.

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

Итак, к этому моменту они уже сделали что-то вроде:

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

Schema :: create ('организации', function ($ table)
$ table-> приращения ('идентификатор');
$ table-> string ('имя') -> nullable ();
$ table-> text ('о') -> nullable ();
);

Это создаст для них новую таблицу. И чтобы сделать это чистым, вы также должны добавить функцию вниз и в этом случае просто отбросить всю таблицу. Функция down будет запущена, когда вы захотите откатить миграцию.

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

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

Schema :: create ('организации', function ($ table)
$ table-> integer ('размер') -> nullable ();
);

Они надеются добавить новый размер столбца в существующую таблицу.

Теперь посмотрим, что происходит и как этого не допустить.

Решение

Основная проблема здесь в том, что новые разработчики часто не замечают, замечая статическое имя метода схемы . Вы используете create только тогда, когда изначально создаете свою таблицу. Если вам нужно в любое время обновить таблицу, вы можете использовать вместо нее table.

Итак, реальная функция должна быть такой:

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

Schema :: table ('организации', function ($ table)
$ table-> integer ('размер') -> nullable ();
);

А функция вниз будет такой:

публичная функция вниз ()

Schema :: table ('организации', function ($ table)
$ table-> dropColumn ('размер');
);

Я лично предлагаю вам после создания нового (изменяемого) файла миграции сделать следующее:

Еще один совет

Это пригодится на более позднем этапе, если вы хотите автоматизировать развертывание и ваш скрипт должен выполнить откат.

Еще один совет, который я могу вам дать, - это спланировать, где вы хотите разместить свою колонку. Просто сделав это, Laravel поместит ваш новый столбец в конец, вероятно, после столбца updated_at. (В большинстве таблиц это есть)

Вы хотите использовать метод после, чтобы ваш окончательный код выглядел так:

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

Schema :: table ('организации', function ($ table)
$ table-> integer ('размер') -> после ('имя') -> nullable ();
);

В этом случае Laravel разместит ваш новый столбец сразу после столбца имени, чтобы он выглядел красиво и был организован намного лучше.

Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...
Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...