Erreur de contrainte de base de données dans Laravel : "Impossible de supprimer ou de mettre à jour une ligne parent"
Une erreur courante rencontrée dans Laravel est "SQLSTATE[23000 ] : Violation de la contrainte d'intégrité : 1451 Impossible de supprimer ou de mettre à jour une ligne parent." Cette erreur se produit lorsque vous essayez de supprimer une ligne d'une table parent qui a des lignes enfants dans une table associée.
Dans votre cas, vous rencontrez cette erreur lorsque vous tentez de supprimer une publication associée à des likes. En effet, la table des likes a une contrainte de clé étrangère qui fait référence à la table des publications. Lorsque vous essayez de supprimer une publication, elle ne peut pas être supprimée car il y a encore des enregistrements dans la table des likes qui en dépendent.
Pour résoudre cette erreur, vous pouvez modifier le schéma de votre base de données pour utiliser onDelete('cascade' ). Cela supprimera automatiquement les enregistrements enfants associés lorsque l'enregistrement parent est supprimé.
Schéma de likes mis à jour avec onDelete('cascade'):
<code class="php">Schema::create('likes', function (Blueprint $table) { $table->increments('id'); $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });</code>
Alternativement, vous peut supprimer manuellement les enregistrements enfants associés avant de supprimer l'enregistrement parent. Dans votre modèle Laravel, vous pouvez utiliser le code suivant pour ce faire :
<code class="php">$post->likes()->delete(); $post->delete();</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!