2016-08-12 2 views
1

У меня есть довольно простой и глупый вопрос относительно внешних ключей и построителя схем laravel (или, скорее, неправильное понимание того, как могут работать внешние ключи).Ограничение ключа Foregin на сводной таблице в Laravel 5.2

У меня есть следующие 3 таблицы:

Blueprint

  1. идентификатор
  2. имя
  3. некоторые другие поля

Коллекция

  1. ID
  2. описание
  3. некоторые другие поля

BlueprintCollection

  1. ID
  2. blueprint_id
  3. collection_id

Я хочу с reate внешний ключ, который связывает Blueprint's id с BlueprintCollection's blueprint_id и делает то же самое для Collection.

Это мое понимание того, что я должен сделать следующее

$table->foreign('blueprint_id')->references('id')->on('blueprint_table'); 

С ->onDelete('cascade или ->onUpdate('cascade'); не должны делать эту часть, но я хочу, чтобы это было так.

Это должно быть сделано в таблице BlueprintCollection.

Однако, если я правильно понимаю это, он удалит запись в таблице Blueprint, если строка, содержащая blueprint_id, которая ссылается на id на Blueprint, будет удалена.

Очевидно, что, поскольку это соединительная таблица, я не хочу этого делать, а наоборот. Если запись в Blueprint удалена, я хочу удалить запись в таблице BlueprintCollection.

Я правильно понимаю это?

ответ

0

Попробуйте следующий:

$table 
    ->foreign('blueprint_id') 
    ->references('id') 
    ->on('blueprint_table') 
    ->onDelete('cascade') 
    ->onUpdate('cascade'); 
Смежные вопросы