sql >> Base de Datos >  >> RDS >> Mysql

Laravel no puede eliminar o actualizar una fila principal:falla una restricción de clave externa

Sí, es tu esquema. La restricción en likes.post_id evitará que elimine registros de las posts mesa.

Una solución podría ser usar onDelete('cascade') en los likes archivo de migración:

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

De esta manera, cuando se elimine una publicación, también se eliminarán todos los Me gusta relacionados.

O, si tiene una relación entre el modelo Publicar y el modelo Me gusta, puede $post->likes()->delete() antes de eliminar la publicación en sí.