06 Creación del modelo CARPETAS en el curso de LARAVEL (PHP y MySql) FullStack

Duración: 15 min
Módulo: 🏗️ Modelos de Datos y Controladores Lección 1 de 4

Descripción

📂 Lección 06: Creación del Modelo CARPETA y Subcarpetas en LARAVEL

Con la autenticación lista, entramos en la arquitectura de datos. Esta lección se enfoca en la creación del Modelo Carpeta y la lógica de base de datos necesaria para soportar una estructura jerárquica (carpetas padre e hijos o subcarpetas), imitando un sistema de archivos real.

💻 Preparación del Entorno Visual:

  • Menú Principal: Se añade el elemento "Mi Unidad" [01:47] al sidebar del dashboard, marcando el inicio del módulo de gestión de archivos.

🧱 Creación del Modelo y Migración:

  • Comando Clave: Se utiliza el comando de Artisan php artisan make:model Carpeta -m [03:00] para generar el modelo en singular y su migración correspondiente en plural (carpetas).
  • Convenciones MVC: El instructor enfatiza la importancia de usar el singular para el modelo (Carpeta) y el plural para la tabla de migración (carpetas) [03:59].

🔗 Estructura de la Tabla carpetas (Migración):

La migración se centra en dos campos cruciales para la gestión de la jerarquía:

  1. Nombre de la Carpeta: Se define el campo string para almacenar el nombre que le da el usuario [06:00].
  2. Relación Padre-Hijo: Se implementa el campo carpeta_padre_id [06:44] para crear subcarpetas.
    • Lógica Nula: Se explica por qué este campo debe ser nullable() [07:05]: si es una carpeta raíz (padre), el campo estará vacío. Si es una subcarpeta, apuntará al ID de su carpeta superior.
    • Clave Foránea: Se establecen las restricciones de llave foránea [11:38] que se autorreferencian dentro de la misma tabla.
    • Acciones en Cascada: Se implementa onUpdate('cascade') y onDelete('cascade') [12:56] para garantizar que, si una carpeta padre se elimina, todas sus subcarpetas se eliminen automáticamente.

Finalmente, se ejecuta php artisan migrate [13:58] para crear la tabla carpetas en la base de datos, completando la estructura de datos para el módulo principal.