Heim >Datenbank >MySQL-Tutorial >Wie behebt man den Fehler „Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl' in Laravel?
In Laravel kann beim Versuch, einen Beitrag zu löschen, ein interessanter Fehler auftreten das hat damit verbundene Likes. Die Fehlermeldung lautet:
"SQLSTATE[23000]: Verletzung der Integritätsbeschränkung: 1451 Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsselbeschränkung schlägt fehl (eliapi8.likes, CONSTRAINT likes_post_id_foreign FOREIGN KEY (post_id) REFERENCES posts ( id))"
Analyse des Schemas
Bei der Untersuchung des Schemas wird deutlich, dass eine Fremdschlüsseleinschränkung für das post_id-Feld der Likes-Tabelle besteht. Diese Einschränkung verhindert das Löschen eines Beitragsdatensatzes, wenn ähnliche Datensätze vorhanden sind.
Vorgeschlagene Lösungen
Lösung 1: Verwenden Sie onDelete('cascade')
Die Einführung von onDelete('cascade') in der Migrationsdatei der Likes-Tabelle bietet eine Lösung. Durch die Verwendung dieser Anweisung werden beim Löschen eines Beitragsdatensatzes alle entsprechenden Like-Datensätze automatisch entfernt:
Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
Lösung 2: Modellbeziehungen nutzen
Wenn der Beitrag Wenn das Modell eine Beziehung zum Like-Modell aufrechterhält, kann der folgende Ansatz verwendet werden:
Durch die Übernahme einer dieser Lösungen kann der problematische Fehler behoben werden, sodass Beiträge unabhängig von ihrem Like-Status gelöscht werden können.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl' in Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!