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

Метод foreign

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

Синтаксис

<?php Schema::table('table_name', function (Blueprint $table) { $table->foreign('column_name') ->references('id') ->on('related_table'); }); ?>

Пример

Создадим таблицу posts с внешним ключом на таблицу users:

<?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('content'); $table->foreignId('user_id') ->constrained() ->onDelete('cascade'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('posts'); } }; ?>

Пример

Добавим внешний ключ в существующую таблицу comments с использованием метода 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('comments', function (Blueprint $table) { $table->foreign('post_id') ->references('id') ->on('posts') ->onDelete('cascade'); }); } public function down(): void { Schema::table('comments', function (Blueprint $table) { $table->dropForeign(['post_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::create('orders', function (Blueprint $table) { $table->id(); $table->integer('user_id'); $table->integer('product_id'); $table->integer('quantity'); $table->timestamps(); $table->foreign(['user_id', 'product_id']) ->references(['id', 'id']) ->on('users_products') ->onUpdate('cascade') ->onDelete('restrict'); }); } public function down(): void { Schema::dropIfExists('orders'); } }; ?>

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

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