37 Como eliminar los archivos en directorio y base de datos de LARAVEL (PHP y MySql) FullStack

Duración: 18 min
Módulo: 🗑️ Eliminación y Seguridad de Archivos Lección 1 de 6

Descripción

🗑️ Lección 37: Cómo Eliminar Archivos en Directorio y Base de Datos

Este capítulo aborda la implementación de la función "Eliminar" (Delete) dentro del sistema, asegurando que un archivo sea eliminado completamente tanto del sistema de archivos (Storage/Directorio) como del registro en la base de datos (BD).

🛠️ Configuración del Botón de Eliminación

El primer paso es crear el botón que disparará la acción de eliminación:

  1. Formulario: Se envuelve el botón dentro de una etiqueta <form> en la columna de "Acciones" de la tabla, ya que la eliminación se manejará como una solicitud DELETE HTTP [01:47].
  2. Input Oculto: Se crea un campo <input type="hidden"> que transporta el ID del archivo ($archivo->id) para que el controlador sepa qué registro eliminar [02:06].
  3. Botón: Se añade un botón de tipo submit con la clase de Bootstrap btn btn-danger (rojo) y el icono de bote de basura (trash) [02:45].

🔗 Definición de Rutas y Controlador

Se configura el backend para manejar la solicitud de eliminación:

  1. Ruta DELETE: En el archivo de rutas (web.php), se define una nueva ruta utilizando el método Route::delete() y se le asigna un nombre para facilitar la redirección [04:42].
  2. Métodos del Formulario: Para que el formulario HTML envíe una solicitud DELETE, se deben incluir dos directivas dentro del formulario:
    • @csrf: Para la protección contra ataques CSRF (Cross-Site Request Forgery) [07:36].
    • @method('delete'): Para falsificar el método HTTP a DELETE [07:58].
  3. Función en el Controlador: En el ArchivoController, se crea la función eliminar_archivo que recibe la solicitud (Request) [05:22].

📝 Lógica de Eliminación (BD y Storage)

La función del controlador ejecuta dos pasos críticos para la eliminación total del archivo:

  1. Eliminación del Directorio (Storage):
    • Primero, se busca el archivo por su ID en la BD para obtener el nombre completo y la carpeta_ID [10:16].
    • Se utiliza la fachada Storage::delete() para construir la ruta del archivo y eliminarlo del directorio public (ej. storage/carpeta_ID/nombre_archivo.extensión) [10:44].
  2. Eliminación de la Base de Datos:
    • Una vez que el archivo es borrado físicamente, se utiliza el método destroy() del modelo para eliminar el registro correspondiente de la tabla archivos [13:46].
  3. Redireccionamiento: Finalmente, se redirige al usuario a la vista de la carpeta con un mensaje de éxito (success) [15:05].

Con esto, el sistema cumple con la funcionalidad de eliminar archivos de manera segura y completa. El instructor anuncia que el siguiente tema será la gestión de archivos públicos y privados [17:37].