РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
345 of 1392 menu

Метод down

Метод down класса Migration предназначен для отката изменений, которые были внесены в базу данных методом up. Этот метод вызывается при выполнении команды php artisan migrate:rollback или php artisan migrate:reset. Внутри метода down необходимо описать действия, обратные тем, что были выполнены в up - как правило, это удаление таблиц или колонок, либо изменение их структуры.

Синтаксис

<?php Schema::dropIfExists('table_name'); ?>
<?php Schema::table('table_name', function (Blueprint $table) { $table->dropColumn('column_name'); }); ?>

Пример

Рассмотрим простую миграцию для создания таблицы articles с полями title и body. В методе down мы удалим эту таблицу.

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up(): void { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('body'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('articles'); } }; ?>

Пример

Если нужно откатить только добавление новой колонки, в методе down используем метод dropColumn.

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up(): void { Schema::table('articles', function (Blueprint $table) { $table->foreignId('category_id')->constrained(); }); } public function down(): void { Schema::table('articles', function (Blueprint $table) { $table->dropForeign(['category_id']); $table->dropColumn('category_id'); }); } }; ?>

Пример

При откате изменения типа колонки необходимо вернуть исходный тип.

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up(): void { Schema::table('articles', function (Blueprint $table) { $table->string('body', 1000)->change(); }); } public function down(): void { Schema::table('articles', function (Blueprint $table) { $table->text('body')->change(); }); } }; ?>

Пример

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

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up(): void { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->foreignId('article_id')->constrained()->cascadeOnDelete(); $table->text('content'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('comments'); } }; ?>

Смотрите также

  • метод up,
    который выполняет изменения в базе данных
  • класс Schema,
    предоставляющий методы для работы со схемой базы данных
  • метод dropIfExists,
    который удаляет таблицу, если она существует
  • метод dropColumn,
    который удаляет указанную колонку из таблицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить