„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie behebt man den Fehler „Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl“ in Laravel?

Wie behebt man den Fehler „Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl“ in Laravel?

Veröffentlicht am 10.11.2024
Durchsuche:876

How to Solve \

Laravel-Fehler: „Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl“

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 der Schema

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 das Post-Modell eine Beziehung zum Like-Modell unterhält, kann der folgende Ansatz verwendet werden:

  1. Rufen Sie die zugehörigen Likes mit $post->likes()->get() ab.
  2. Löschen Sie die abgerufenen Likes mit $post->likes()->delete().
  3. Löschen Sie schließlich den Beitrag selbst mit $post->delete().

Indem Sie eine dieser Lösungen übernehmen , kann der problematische Fehler behoben werden, sodass Beiträge unabhängig von ihrem Like-Status gelöscht werden können.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3