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:
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.
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