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!