"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver el error \"No se puede eliminar o actualizar una fila principal: falla una restricción de clave externa\" en Laravel?

¿Cómo resolver el error \"No se puede eliminar o actualizar una fila principal: falla una restricción de clave externa\" en Laravel?

Publicado el 2024-11-10
Navegar:277

How to Solve \

Error de Laravel: "No se puede eliminar o actualizar una fila principal: falla una restricción de clave externa"

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:

  1. Recupera los Me gusta asociados usando $post->likes()->get().
  2. Elimina los Me gusta recuperados usando $post->likes()->delete().
  3. Finalmente, elimina la publicación usando $post->delete().

Al adoptar cualquiera de estas soluciones, el error problemático se puede resolver, permitiendo que las publicaciones se eliminen independientemente de su gusto. estado.

Último tutorial Más>

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