En Laravel, puede surgir un error intrigante al intentar eliminar una publicación que tiene me gusta asociados. El mensaje de error proclama:
"SQLSTATE[23000]: Violación de restricción de integridad: 1451 No se puede eliminar o actualizar una fila principal: falla una restricción de clave externa (eliapi8.likes, CONSTRAINT likes_post_id_foreign FOREIGN KEY (post_id) REFERENCIAS publicaciones ( id))"
Analizando el esquema
Al examinar el esquema, se hace evidente que existe una restricción de clave externa en el campo post_id de la tabla Me gusta. Esta restricción evita la eliminación de un registro de publicación si hay registros similares asociados.
Soluciones propuestas
Solución 1: utilizar onDelete('cascade')
Introducir onDelete('cascade') en el archivo de migración de la tabla Me gusta proporciona una solución. Al utilizar esta directiva, cuando se elimina un registro de publicación, todos los registros similares correspondientes se eliminan automáticamente:
Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
Solución 2: aprovechar las relaciones del modelo
Si el modelo Post mantiene una relación con el modelo Like, se puede emplear el siguiente enfoque:
Al adoptar cualquiera de estas soluciones, el error problemático se puede resolver, permitiendo que las publicaciones se eliminen independientemente de su gusto. estado.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3