Удаление полей в миграциях Laravel
Структура таблицы не всегда остается неизменной. Поле могло быть нужно на этапе прототипа, а потом стало лишним. Удалять колонку вручную в PMA неудобно - лучше описать изменение миграцией, как добавление или переименование полей.
Для удаления одной колонки
в Schema::table используют
метод dropColumn. В параметр
передают имя поля:
<?php
Schema::table('posts', function (Blueprint $table) {
$table->dropColumn('name');
});
?>
После применения миграции колонка исчезнет из таблицы вместе со всеми данными в ней. Откатить такое удаление без резервной копии обычно нельзя - данные не сохраняются.
Несколько столбцов можно удалить одним вызовом - передайте массив имен:
<?php
Schema::table('posts', function (Blueprint $table) {
$table->dropColumn(['name', 'desc']);
});
?>
Пример миграции для таблицы пользователей:
<?php
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('age');
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->integer('age');
});
}
?>
В методе down колонку можно
создать заново - тогда откат
вернет структуру. Сами значения
в поле при этом не восстановятся.
Не забудьте убрать удаленное поле
из моделей, форм и запросов в коде.
Удалите из таблицы с юзерами поле age.
Удалите из таблицы с юзерами поля name и surname.
Что произойдет с данными в колонке
после dropColumn?