2015-12-28 5 views
1

один-ко-многим У меня есть две таблицы: - Продукты - ТемыLaravel 5 Удаление отношения

продукты принадлежат к теме - Темы имеет много продуктов.

Я хочу удалить тему и удалить ее связь с другими Продукты. В идеальном мире удаление темы приведет к сбросу связанного продукта theme_id в NULL. В моей таблице продуктов я попытался -> onDelete ('cascade'), но это удаляет и тему, и соответствующие продукты. Если я не реализовать -> OnDelete («Каскад») Я получаю эту ошибку:.

QLSTATE [23000]: Integrity нарушение ограничения: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа терпит неудачу (acmeproducts, CONSTRAINT products_theme_id_foreign FOREIGN KEY (theme_id) Лит themes (id) ON DELETE CASCADE) (SQL: обновление products набор theme_id =, updated_at = 2015-12-28 20:20:05 где id = 1)

Любые предложения будут супер полезный. Спасибо!

ответ

2

Вы должны определить свой продукт внешнего ключ OnDelete, чтобы установить нуль, а также ключевое поле как иностранное обнуляемого

Schema::create('products', function(Blueprint $t) { 
     ... 
     $t->integer('theme_id')->unsigned()->nullable(); 
     ... 

     $t->foreign('theme_id')->references('id')->on('themes') 
      ->onDelete('set null'); 
    }); 
+0

Спасибо - спасатель! –