2015-12-28 2 views
1

J'ai deux tables: - Produits - ThèmesLaravel 5 Suppression d'un-à-plusieurs

produits appartiennent à un thème - Thèmes a de nombreux produits.

Je souhaite supprimer un thème et supprimer son association avec des produits. Dans un monde parfait, la suppression d'un thème réinitialiserait le theme_id des Produits associés à NULL. Dans ma table Produits, j'ai essayé -> onDelete ('cascade') mais cela supprime à la fois le thème et les produits correspondants. Si je ne mettons pas en œuvre -> onDelete ('cascade') Je reçois cette erreur.

QLSTATE [23000]: Intégrité violation de contrainte: 1452 Impossible d'ajouter ou mettre à jour une ligne enfant: une contrainte de clé étrangère échoue (acmeproducts, CONTRAINTE products_theme_id_foreign FOREIGN KEY (theme_id) RÉFÉRENCES themes (id) CASCADE SUR SUPPRIMER) (SQL: mise à jour products définie theme_id =, updated_at = 28/12/2015 20:20:05 où id = 1)

Toute suggestion serait super utile. Je vous remercie!

Répondre

2

Vous devez définir votre produit clé étrangère onDelete pour définir nulle et aussi le champ de clé étrangère comme annulable

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

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

Merci - bouée de sauvetage! –