Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pplrPmMgTRm 93 of 252 menu
◀ ▶

Удаление таблиц в миграциях в Laravel

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

Для удаления таблицы вызывают метод drop у фасада Schema. Имя таблицы передают параметром:

<?php Schema::drop('posts'); ?>

После применения миграции таблица posts исчезнет из базы вместе со всеми строками. Если таблицы уже нет, drop вернет ошибку.

Чтобы не падать на несуществующей таблице, используют dropIfExists. Метод сначала проверит, есть ли таблица, и только потом удалит:

<?php Schema::dropIfExists('posts'); ?>

dropIfExists удобен в методе down при откате миграций и когда структура могла уже измениться на другой среде.

Пример миграции, которая удаляет таблицу пользователей:

<?php public function up(): void { Schema::dropIfExists('users'); } public function down(): void { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); }); } ?>

В down таблицу создают заново - откат вернет структуру, но не вернет удаленные данные. Перед удалением рабочей таблицы убедитесь, что она больше не используется в коде и моделях.

Удалите таблицу с юзерами.

Попробуйте удалить несуществующую таблицу через drop и через dropIfExists. Чем команды отличаются?

Что произойдет с данными в таблице после drop?

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить