Curso de Laravel Gohu
Base de datos y relaciones en Laravel: el sistema del curso
Por Víctor Peña · Actualizado el
Antes de escribir una sola consulta necesitamos saber contra qué vamos a consultar. Esta lección define el sistema de Mascotas, la base de datos que usaremos durante todo el curso de Laravel Gohu.
No es un trámite previo: cada consulta que escribamos más adelante —un with('refugio'), un whereHas('mascotas'), un join— no es más que recorrer las relaciones que vamos a definir aquí. Si este modelo te queda claro, el resto del curso es aplicar métodos.
Por qué se diseña antes de programar
El análisis previo al desarrollo sirve para identificar los requisitos y las funcionalidades del sistema. La herramienta para hacerlo es el diagrama entidad-relación (DER), una representación gráfica que muestra las entidades, sus atributos y cómo se conectan entre sí.
Consta de tres elementos:
- Entidades: objetos del mundo real que tienen datos asociados. Cada una acaba siendo una tabla.
- Atributos: las propiedades de cada entidad. Acaban siendo las columnas.
- Relaciones: cómo se conectan las entidades. Acaban siendo claves foráneas y métodos de Eloquent.
Si quieres profundizar en cómo se construye uno desde cero, lo desarrollamos en qué es el diagrama entidad-relación.
El sistema de Mascotas
El sistema gestiona la adopción de mascotas en refugios. Todo desarrollo requiere un análisis previo que identifique el alcance, las necesidades del cliente y las variables que van a intervenir.
Entidades y atributos
- Refugios: nombre, ciudad, dirección, teléfono, encargado.
- Personas: nombre, apellido, DNI, dirección, teléfono.
- Mascotas: código, tipo, edad, raza, color, pedigree.
- Vacunas: tipo, precio.
- Adopciones: fecha, detalle.
Las relaciones
Uno a uno
- Una mascota tiene una única adopción.
Uno a muchos
- Un refugio tiene muchas mascotas.
- Una persona realiza muchas adopciones.
Muchos a muchos
- Una mascota tiene muchas vacunas, y una vacuna se aplica a muchas mascotas.
Fíjate en que cada relación está enunciada en los dos sentidos. Es la forma de no equivocarse: leer solo «un refugio tiene muchas mascotas» podría hacerte pensar en un muchos a muchos, hasta que lees la vuelta y ves que cada mascota pertenece a un solo refugio.
El diagrama

De la relación al método de Eloquent
Aquí está el puente con el resto del curso. Cada tipo de relación del diagrama se traduce en un par de métodos concretos dentro de los modelos:
| Relación en el diagrama | En el modelo | En el modelo relacionado |
|---|---|---|
| Mascota tiene una adopción | hasOne |
belongsTo |
| Refugio tiene muchas mascotas | hasMany |
belongsTo |
| Persona realiza muchas adopciones | hasMany |
belongsTo |
| Mascota tiene muchas vacunas | belongsToMany |
belongsToMany |
Y eso se traduce a su vez en la estructura de la base de datos:
- Uno a muchos guarda la clave foránea en el lado «muchos». La tabla
mascotaslleva una columnarefugio_id. - Muchos a muchos necesita una tabla intermedia. Para mascotas y vacunas será
mascota_vacuna, con las dos claves y, en nuestro caso, la fecha de aplicación.
Esa tabla pivote vas a verla aparecer varias veces en el curso, tanto en los joins del Query Builder como en las cargas anidadas de Eloquent. No es un detalle técnico suelto: sale directamente del muchos a muchos de este diagrama.
Qué llevarte de esta lección
Ten el diagrama a mano durante el resto del curso. Cuando escribamos Refugio::with('mascotas.vacunas'), lo que estamos recorriendo son dos relaciones de este modelo, una detrás de otra. Y cuando una consulta no devuelva lo que esperabas, el primer lugar donde mirar casi siempre es aquí.
Para cerrar
Con el modelo de datos definido ya podemos pasar al código. En la siguiente lección creamos los modelos Eloquent con sus relaciones.
Saludos y éxitos.
Norvic Software
Desarrollamos el software que tu empresa necesita
Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.
- Chatbots con Inteligencia Artificial
- Creación de agentes de IA
- Integración de IA en tus sistemas
- Desarrollo de software a medida
- Aplicaciones móviles iOS y Android
- Consultoría y asesoramiento técnico
Cotización sin costo · Respuesta directa por WhatsApp