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

Метод dropForeign

Метод dropForeign класса Blueprint применяется в миграциях для удаления существующего ограничения внешнего ключа из таблицы. В качестве параметра метод принимает имя удаляемого ограничения или массив колонок, по которым был создан внешний ключ. Если передаётся массив колонок, Laravel автоматически сгенерирует имя ограничения по стандартному шаблону.

Синтаксис

<?php // Удаление по имени ограничения Schema::table('table_name', function (Blueprint $table) { $table->dropForeign('fk_name'); }); // Удаление по массиву колонок Schema::table('table_name', function (Blueprint $table) { $table->dropForeign(['column_name']); }); ?>

Пример

Давайте создадим миграцию для добавления внешнего ключа к таблице 'posts', а затем удалим его:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('body'); $table->foreignId('user_id') ->constrained() ->onDelete('cascade'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('posts'); } }; ?>

Теперь напишем миграцию для удаления внешнего ключа с именем 'posts_user_id_foreign':

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::table('posts', function (Blueprint $table) { $table->dropForeign('posts_user_id_foreign'); }); } public function down(): void { Schema::table('posts', function (Blueprint $table) { $table->foreignId('user_id') ->constrained() ->onDelete('cascade'); }); } }; ?>

Пример

Если вы не знаете точное имя ограничения, можно передать массив колонок, и Laravel автоматически определит имя внешнего ключа:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::table('posts', function (Blueprint $table) { $table->dropForeign(['user_id']); }); } public function down(): void { Schema::table('posts', function (Blueprint $table) { $table->foreignId('user_id') ->constrained() ->onDelete('cascade'); }); } }; ?>

Пример

Удаление составного внешнего ключа по массиву колонок:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::table('order_items', function (Blueprint $table) { $table->dropForeign(['order_id', 'product_id']); }); } public function down(): void { Schema::table('order_items', function (Blueprint $table) { $table->foreign(['order_id', 'product_id']) ->references(['id', 'id']) ->on('order_product') ->onDelete('cascade'); }); } }; ?>

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

  • метод foreign,
    который добавляет внешний ключ к таблице
  • метод index,
    который создаёт индекс для колонок
  • метод disableForeignKeyConstraints,
    который временно отключает проверку внешних ключей
  • метод table,
    который используется для изменения существующей таблицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить