Laravel 5 Deleting A One-to-many Relationship

I have two tables: - Products - Themes

Products belong to a Theme - Themes has many Products.

I want to delete a theme and remove it's association with any Products. In a perfect world deleting a theme would reset the related Products' theme_id to NULL. In my Products table I have tried ->onDelete('cascade') but this deletes both the Theme and corresponding Products. If I do not implement ->onDelete('cascade') I get this error:

QLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (acme.products, CONSTRAINT products_theme_id_foreign FOREIGN KEY (theme_id) REFERENCES themes (id) ON DELETE CASCADE) (SQL: update products set theme_id = , updated_at = 2015-12-28 20:20:05 where id = 1)

Any suggestions would be super helpful. Thank You!



You have to define your product foreign key onDelete to set null and also the foreign key field as nullable

  Schema::create('products', function(Blueprint $t) {

            ->onDelete('set null');