Maison > base de données > tutoriel mysql > le corps du texte

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

DDD
Libérer: 2024-10-26 11:22:02
original
705 Les gens l'ont consulté

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');
});
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!