46 CRUD (DELETE) eliminar registros de la tabla de la BASE de DATOS con (LARAVEL y MYSQL)FULLSTACK

Duración: 8 min
Módulo: 🔄 Módulo CRUD: Actualización y Eliminación Lección 3 de 4

Descripción

❌ Lección 46: CRUD (DELETE) Eliminar Registros de la Base de Datos

Esta lección avanzada finaliza el ciclo del CRUD, enfocándose en la función de Eliminación (Destroy), la cual permite borrar un registro de la tabla de la base de datos de manera definitiva.

1. ⚙️ Implementación del Formulario de Eliminación [01:11]

Debido a que la eliminación requiere un método HTTP que no es estándar en un enlace (<a>), se utiliza un formulario simple que envuelve el botón "Borrar".

  • Creación del Formulario: Se crea un elemento <form> alrededor del botón "Eliminar" en la vista de listado (index.blade.php) [01:25].
  • Token CSRF: Se incluye la directiva @csrf para proteger contra ataques de falsificación de solicitudes entre sitios [04:05].
  • Método DELETE: Laravel requiere que la acción de eliminar use el método DELETE. Esto se simula dentro del formulario con la directiva @method('DELETE') [04:17].
  • URL de Acción: El action del formulario apunta a la ruta de la función destroy, concatenando el ID del registro a eliminar (admin/peliculas/{id}) [03:30].

    HTML

    <form action="{{ url('admin/peliculas/' . $pelicula->id) }}" method="POST">    @csrf    @method('DELETE')    <input type="submit" value="Borrar" class="btn btn-danger btn-sm"> </form>

2. 💻 Lógica del Controlador (PeliculasController — Función destroy) [04:50]

La función destroy($id) es la más simple del CRUD en términos de código, encargándose de invocar la eliminación.

  • Búsqueda y Eliminación: Se utiliza el método estático destroy($id) del modelo Pelicula. Laravel se encarga de buscar el registro por ID y eliminarlo [05:02].

    PHP

    Pelicula::destroy($id);

  • Redireccionamiento: Después de la eliminación, se redirige al usuario de vuelta a la vista de listado (peliculas.index) [05:18].
  • Eliminación de Archivos (Consideración Adicional): Aunque no se implementa en esta lección, se recuerda que si la tabla a eliminar (en este caso, peliculas) tuviera relaciones con otros archivos (como se vio con las imágenes en la lección 45), es necesario eliminar manualmente esos archivos del servidor usando Storage::delete() antes de eliminar el registro de la base de datos, para evitar la acumulación de archivos basura.

3. ✅ Confirmación de Usuario (Confirm) [06:05]

Para evitar eliminaciones accidentales, se añade una ventana de confirmación antes de que se ejecute la acción.

  • Evento onclick: Se utiliza el evento onclick de JavaScript en el botón de envío (<input type="submit">).
  • Función return confirm(): La función confirm() de JavaScript muestra un cuadro de diálogo con un mensaje, que si se cancela, detiene el envío del formulario.

    HTML

    onclick="return confirm('¿Está seguro de eliminar el registro?')"

  • Resultado: Al hacer clic, el usuario debe confirmar la acción, proporcionando una capa de seguridad antes de que el registro sea eliminado definitivamente [06:49].

🎉 Finalización del CRUD [05:47]

Con la implementación de destroy, el ciclo de vida de los datos está completo, resultando en un CRUD funcional para el módulo de películas:

  • Create (store)
  • Read (index y show)
  • Update (edit y update)
  • Delete (destroy)