11 Como programar el CRUD Completo de Turnos de forma segura con registros relacionados en Laravel
Duración: 15 minDescripción
🔍 Lección 11: Cómo Programar el CRUD Completo de Turnos con Registros Relacionados en Laravel 🚀
En esta lección creamos el módulo de Turnos Laborales (TurnoController.php), construyendo su CRUD completo e integrando la relación con el modelo de Categorías. Además, preparamos las propiedades visuales (color de fondo y color de texto) que permitirán la visualización e interacción de los turnos en un calendario dinámico en futuros capítulos.
🎯 Lo realizado en este capítulo
- 🛣️ Rutas Web y Navegación:
- Se agregaron en routes/web.php las rutas necesarias para el módulo: index, create, store, edit, update y destroy.
- Se integró el nuevo enlace de navegación en el menú principal que direcciona a turnos.index.
- 🔄 Consulta de Relaciones Eficiente (Eager Loading):
- En TurnoController@index, se utilizó la carga ansiosa Turno::with('categoria')->get() para traer los registros de los turnos junto con la información de su categoría relacionada, optimizando las consultas SQL a la base de datos.
- 📝 Creación e Inserción Masiva (create y store):
- Poblado de Selección: El método create() recupera las categorías disponibles para desplegarlas dentro de un campo desplegable (select) en el formulario.
- Validación y Asignación Masiva: En el método store(), se aplican reglas de validación (category_id requerido y existente en la tabla categorias, nombre, hora de inicio y fin) y se implementa la inserción masiva utilizando $fillable en el modelo Turno.
- 🎨 Gestión de Interfaz e Inputs de Color (edit y update):
- Se habilitaron selectores de color <input type="color"> en el formulario para definir el color_fondo y color_texto de cada turno (claves para la posterior integración con FullCalendar).
- En el método update(), se consulta el registro mediante su ID, se validan las entradas y se ejecuta el método $turno->update($request->all()).
- 🗑️ Eliminación Directa (destroy):
- Se configuró la acción de borrado capturando el ID desde el formulario con el método @method('DELETE'), eliminando la fila correspondiente de la base de datos y retornando una notificación al listado principal.
🗄️ Próximo paso
Con los módulos esenciales listos (Usuarios, Empleados, Categorías, Sucursales y Turnos), el siguiente paso principal en la arquitectura de la base de datos será abordar el módulo de Cronogramas, donde asignaremos estos turnos a los empleados vinculando toda la información mediante la librería FullCalendar.