10 🚗 Registro de Clientes + Vehículos - Laravel CRUD Empresarial | Proyecto FullStack

Duración: 45 min
Módulo: 🚗 Módulos Operacionales de Inventario Lección 3 de 4

Descripción

🚗 Lección 10: Registro de Clientes + Vehículos - Laravel CRUD Empresarial | Proyecto FullStack

Esta lección se enfoca en la creación del Módulo de Clientes y la Tabla de Vehículos, estableciendo una relación fundamental de Uno a Muchos (1:N) para un sistema de parqueo robusto.

1. Definición y Migración de la Estructura de Datos 💾

  • 1.1. Tabla clientes:
    • Objetivo: Almacenar la información personal esencial del conductor de forma ágil y eficiente [01:33].
    • Campos definidos:
      • nombres (String): Nombre completo del cliente [01:27].
      • numero_documento (String): Campo genérico para CI, DNI, o NIT [02:44].
      • correo_electronico y celular (String): Campos definidos como no requeridos (nulables), considerando que el cliente puede no desear compartirlos [00:03:11 - 00:03:43].
      • genero (ENUM) y estado (Boolean): Campos de control interno [03:48, 12:44].
      • softDeletes: Se incluye para permitir una eliminación lógica del cliente [12:52].
  • 1.2. Tabla vehiculos (Relación 1:N):
    • Justificación: Un cliente puede tener múltiples vehículos [06:46], por lo que la información vehicular se separa.
    • Relación Foránea: cliente_ID (llave foránea) que referencia a la tabla clientes [07:52].
    • Integridad: Se añade la acción onDelete('cascade') a la llave foránea para borrar registros relacionados en caso de eliminación, aunque se utiliza soft delete [14:23].
    • Campos definidos:
      • placa (String, Unique): Identificador principal para búsquedas futuras [09:00, 16:14].
      • marca, modelo, color (String): Datos del vehículo [16:31].
      • tipo (ENUM): Clasificación del vehículo (auto, motocicleta, camión) [18:12].
  • 1.3. Verificación de Migraciones: Se ejecutan las migraciones y se valida la relación de uno a muchos en el diseñador de la base de datos [00:18:57 - 00:20:07].

2. Definición de Relaciones en Modelos (Eloquent) 🔗

  • 2.1. Modelo Cliente:
    • Se define la relación hasMany (vehiculos()) para indicar que un cliente tiene muchos vehículos [22:11].
  • 2.2. Modelo Vehiculo:
    • Se define la relación belongsTo (cliente()) para indicar que un vehículo pertenece a un único cliente [23:43].
    • Nota: Se rellenan los arrays $fillable en ambos modelos para permitir la asignación masiva de atributos [20:54, 23:06].

3. Implementación de la Interfaz y Lógica CRUD (Clientes) 🖥️

  • 3.1. Configuración de Acceso:
    • Se añade el ítem "Clientes" al menú de navegación [24:46].
    • Se definen las rutas de recursos para el módulo clientes (Index, Create, Store, etc.) [26:12].
  • 3.2. Listado de Clientes (index): Se crea la vista para mostrar la lista de clientes con la información esencial y las acciones (Editar, Eliminar) [00:28:23 - 00:32:33].
  • 3.3. Registro de Nuevo Cliente (create y store):
    • Formulario: Diseño de la vista create para capturar los 5 datos del cliente [34:22].
    • Validación: Se aplican reglas required para todos los campos [39:10].
    • Estrategia de Datos Genéricos: Se implementa una solución para el manejo de campos sensibles (como correo o celular) que el cliente no desea compartir:
      • Se utilizan valores por defecto en el value del formulario (ej. "Sin documento" o "cliente@correo.com") para cumplir con las reglas de validación y evitar el registro en blanco [00:42:07 - 00:44:24].