Maison  >  Article  >  base de données  >  Comment gérer les problèmes de contraintes de clé étrangère lors de la suppression de publications avec des likes associés ?

Comment gérer les problèmes de contraintes de clé étrangère lors de la suppression de publications avec des likes associés ?

DDD
DDDoriginal
2024-10-26 11:22:02706parcourir

How to Handle Foreign Key Constraint Issues When Deleting Posts with Associated Likes?

Impossible de supprimer ou de mettre à jour la publication avec des problèmes de contrainte de clé étrangère

Cette question se pose lorsque vous tentez de supprimer une publication associée à des likes, entraînant l'erreur : "SQLSTATE[23000] : Violation de contrainte d'intégrité : 1451 Impossible de supprimer ou de mettre à jour une ligne parent..."

Cause du problème

Le à condition que les schémas Post et Like établissent une contrainte de clé étrangère entre les deux tables, où un post_id dans la table Like fait référence à l'identifiant dans la table Posts. Lorsqu'une publication avec des likes liés est supprimée, cela viole cette contrainte, car la suppression de la publication laisserait des likes orphelins dans le tableau des likes.

Option de solution 1 : onDelete('cascade')

Une solution consiste à utiliser onDelete('cascade') dans le fichier de migration Like. Cela spécifie que lorsqu'un enregistrement est supprimé de la table Posts, tous les enregistrements correspondants dans la table Like doivent également être supprimés.

Schema::create('likes', function (Blueprint $table) {
    $table->integer('post_id')->unsigned();
    $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
});

Option de solution 2 : suppression des enregistrements associés

Alternativement, si vous avez défini une relation du modèle Post vers le modèle Like, vous pouvez supprimer les likes associés avant de supprimer la publication elle-même :

$post->likes()->delete();
$post->delete();

En mettant en œuvre l'une ou l'autre de ces solutions, vous peut résoudre l'erreur de contrainte de clé étrangère et supprimer avec succès les publications avec les likes associés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn