58 Módulo Horarios en el sistema de reservas de citas medicas LARAVEL(PHP-MySql) FullStack

Duración: 25 min
Módulo: 🏥 Infraestructura: Consultorios y Doctores Lección 13 de 14

Descripción

🕰️ Lección 58: Introducción al Módulo Horarios

Título del Video: 58 Módulo Horarios en el sistema de reservas de citas medicas LARAVEL(PHP-MySql) FullStack

1. 🔗 Relaciones de la Base de Datos

El instructor comienza recordando la estructura de la tabla horarios, la cual es compleja porque tiene dos llaves foráneas [01:36]:

  • doctor_id: Relacionada con la tabla de Doctores.
  • consultorio_id: Relacionada con la tabla de Consultorios.

Esto significa que un horario siempre debe estar asociado a un doctor y a un consultorio.

2. 🗺️ Preparación y Rutas

Se realizó la configuración inicial para el nuevo módulo:

  • Menú de Navegación: Se añade una nueva opción "Horarios" al menú lateral del administrador, incluyendo un icono de reloj [02:17].
  • Vistas: Se crean las vistas necesarias (index, create, edit, delete) dentro de la carpeta admin/horarios [03:02].
  • Rutas: Se definen las rutas Resource para el HorarioController, bajo el prefijo admin, preparando las rutas para el CRUD del módulo [06:04].

3. 📋 Listado de Horarios (Index)

El listado de horarios requiere obtener datos de tres tablas simultáneamente.

  • Consulta Avanzada: En el método index del HorarioController, se realiza una consulta para traer todos los horarios junto con los datos relacionados, utilizando la carga ansiosa (Eager Loading) [08:16]:
    • Horario::with('doctor')->with('consultorio')->get()

Esta técnica permite acceder a los nombres de los doctores y consultorios directamente desde la vista del listado, sin ejecutar múltiples consultas a la base de datos.

4. 📝 Formulario de Creación (Create)

El desarrollo se enfoca en la vista create para permitir al administrador asignar nuevos horarios a los doctores.

A. Lógica del Controlador

Para llenar los selects del formulario, el método create debe obtener todos los registros de los módulos relacionados:

  • Se obtienen todos los Doctores (Doctor::all()) [17:18].
  • Se obtienen todos los Consultorios (Consultorio::all()) [19:44].
  • Ambas variables se pasan a la vista create.blade.php a través de compact.

B. Diseño del Formulario

El formulario recopila cinco campos principales [13:08]:

CampoTipo de EntradaFuente de Datos
DíaselectOpciones manuales (Lunes a Domingo)
Hora de Inicioinput type="time"Entrada de tiempo
Hora Finalinput type="time"Entrada de tiempo
DoctorselectLista de Doctores (mostrando Nombre y Especialidad) [18:25]
ConsultorioselectLista de Consultorios (mostrando Nombre y Ubicación) [20:11]

El próximo capítulo se centrará en la lógica de almacenamiento (store) para registrar la información del nuevo horario en la base de datos, asegurando que las llaves foráneas se guarden correctamente [24:45].