50 Como eliminar las carpetas en base de datos en el curso de LARAVEL (PHP y MySql) FullStack

Duración: 15 min
Módulo: 🧹 Mantenimiento del Sistema Lección 1 de 2

Descripción

🗑️ Lección 50: Cómo Eliminar las Carpetas en la Base de Datos (Modo Cascada)

Este capítulo se centra en la implementación de la funcionalidad de eliminar carpetas (destroy) y aborda un aspecto crucial del diseño de bases de datos: la eliminación en cascada para mantener la integridad de la información en el sistema.

1. 📂 Relación y Eliminación en Cascada

El instructor comienza revisando la relación entre las tablas carpetas y archivos:

  • Relación en Cascada: Se confirma que en la migración de Laravel, la relación entre carpetas y archivos está definida con la opción onDelete('cascade') [02:59].
  • Implicación: Esto significa que cuando una carpeta es eliminada de la base de datos, todos los archivos asociados a esa carpeta (a través de la llave foránea) se eliminan automáticamente de la tabla archivos.
  • Verificación: Se demuestra que al borrar una carpeta con archivos, los registros de la carpeta y sus archivos desaparecen de las respectivas tablas de la base de datos [03:49].

2. 💻 Implementación de la Función Destroy

Se implementa el botón de eliminación y la lógica en el controlador:

  1. Formulario en la Vista (index.blade.php):
    • Se crea un formulario para la acción de eliminación, enviando el ID de la carpeta como parámetro [11:06].
    • Se utiliza la directiva @method('DELETE') de Laravel dentro del formulario para simular una petición DELETE (aunque se envía como POST) [12:45].
  2. Ruta:
    • Se define una ruta de tipo DELETE (Route::delete) llamada mi-unidad/eliminar-carpeta/{id} que apunta a la función destroy del CarpetaController [08:50].
  3. Lógica del Controlador (CarpetaController.php):
    • En la función destroy($id), se utiliza el método destroy() del modelo Carpeta pasándole el ID recibido [13:38].
    • Carpeta::destroy($id) elimina la carpeta en la BD, y gracias a la configuración en cascada, todos los archivos relacionados se eliminan automáticamente de la base de datos también [14:45].

3. ⚠️ Detalle Faltante: Eliminación del Archivo Físico

El instructor señala un problema que debe resolverse en el siguiente capítulo:

  • Problema: Aunque los registros de la carpeta y sus archivos se eliminan correctamente de la base de datos, los archivos físicos (documentos e imágenes) permanecen en el directorio de almacenamiento del servidor (ej. storage/app/privado/ID_carpeta) [15:06].
  • Próximo Paso: La siguiente lección se centrará en añadir la lógica para eliminar físicamente estos archivos del servidor antes de que se complete la eliminación en cascada de la base de datos.