Heim  >  Artikel  >  Datenbank  >  Wie gehe ich mit Problemen mit Fremdschlüsseleinschränkungen um, wenn ich Beiträge mit zugehörigen „Gefällt mir“-Angaben lösche?

Wie gehe ich mit Problemen mit Fremdschlüsseleinschränkungen um, wenn ich Beiträge mit zugehörigen „Gefällt mir“-Angaben lösche?

DDD
DDDOriginal
2024-10-26 11:22:02706Durchsuche

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

Beitrag mit Fremdschlüsseleinschränkungsproblemen kann nicht gelöscht oder aktualisiert werden

Diese Frage stellt sich, wenn versucht wird, einen Beitrag zu löschen, der mit „Gefällt mir“-Angaben verknüpft ist. Dies führt zu folgendem Fehler: „SQLSTATE[23000]: Verletzung der Integritätsbeschränkung: 1451 Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden …“

Ursache des Problems

Die Die bereitgestellten Post- und Like-Schemas stellen eine Fremdschlüsseleinschränkung zwischen den beiden Tabellen her, wobei eine post_id in der Like-Tabelle auf die ID in der Posts-Tabelle verweist. Wenn ein Beitrag mit verknüpften Likes gelöscht wird, verstößt dies gegen diese Einschränkung, da durch das Löschen des Beitrags verwaiste Likes in der Like-Tabelle zurückbleiben würden.

Lösungsoption 1: onDelete('cascade')

Eine Lösung besteht darin, onDelete('cascade') in der Like-Migrationsdatei zu verwenden. Dies gibt an, dass beim Löschen eines Datensatzes aus der Posts-Tabelle auch alle entsprechenden Datensätze in der Like-Tabelle gelöscht werden sollen.

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

Lösungsoption 2: Verwandte Datensätze löschen

Alternativ können Sie, wenn Sie eine Beziehung vom Post-Modell zum Like-Modell definiert haben, die zugehörigen „Gefällt mir“-Angaben löschen, bevor Sie den Beitrag selbst löschen:

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

Durch die Implementierung einer dieser Lösungen können Sie kann den Fremdschlüsseleinschränkungsfehler beheben und Beiträge mit zugehörigen „Gefällt mir“-Angaben erfolgreich löschen.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Problemen mit Fremdschlüsseleinschränkungen um, wenn ich Beiträge mit zugehörigen „Gefällt mir“-Angaben lösche?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn