Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

Patricia Arquette
Freigeben: 2024-10-25 11:37:02
Original
681 Leute haben es durchsucht

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 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');
});
Nach dem Login kopieren

Lösung 2: Modellbeziehungen nutzen

Wenn der Beitrag Wenn das Modell eine Beziehung zum Like-Modell aufrechterhä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().

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!