Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel kann eine übergeordnete Zeile nicht löschen oder aktualisieren:eine Fremdschlüsseleinschränkung schlägt fehl

Ja, es ist Ihr Schema. Die Beschränkung auf likes.post_id wird Sie daran hindern, Datensätze aus den posts zu löschen Tabelle.

Eine Lösung könnte die Verwendung von onDelete('cascade') sein in den likes Migrationsdatei:

Schema::create('likes', function (Blueprint $table) {
    $table->integer('post_id')->unsigned();
    $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
});

Auf diese Weise werden beim Löschen eines Beitrags auch alle zugehörigen Likes gelöscht.

Oder, wenn Sie eine Beziehung vom Post-Modell zum Like-Modell haben, können Sie $post->likes()->delete() verwenden bevor Sie den Beitrag selbst löschen.