Contenido del curso
Fundamentos de Laravel
- 3

Qué es Artisan y cómo automatiza Laravel
04:23 min - 4

Rutas básicas en Laravel con web.php
06:44 min - 5

Cómo retornar vistas Blade en Laravel
07:02 min - 6

Plantillas Blade para vistas sin código repetido
06:03 min - 7

Controladores en Laravel con Artisan
07:17 min - 8

Migraciones en Laravel como control de versiones
07:01 min - 9

Modelos y factories en Laravel con datos falsos
06:56 min - 10

Consultas a base de datos con Eloquent
08:26 min - 11

Relaciones entre tablas con belongsTo en Laravel
Viendo ahora
Manos a la obra con nuestro proyecto
- 12

Revisión de arquitectura MVC en Laravel
02:15 min - 13

Instala el login de Laravel con Breeze
05:41 min - 14

Rutas de login y logout en Laravel Breeze
04:22 min - 15

Rutas y vistas con Route::resource en Laravel
03:59 min - 16

Listado de posts con paginación en Laravel
04:36 min - 17

Formulario para eliminar registros en Laravel
04:53 min - 18

Vistas de creación y edición con formulario compartido
06:49 min - 19

Formulario CRUD reutilizable en Laravel
05:02 min - 20

Guardar registros con relaciones en Laravel
06:06 min - 21

Método update en Laravel sin reescribir código
01:44 min - 22

Validación de formularios en Laravel con old()
04:43 min - 23

Validación unique en Laravel sin duplicados
05:32 min
Trabajemos en el diseño web de nuestro proyecto
- 24

Diseño del header con Tailwind y Laravel
06:38 min - 25

Divisor con gradiente en Tailwind CSS
03:50 min - 26

Construye la vista home de tu blog en Laravel
06:36 min - 27

Sección destacada con posicionamiento absoluto en Tailwind
04:15 min - 28

Diseño de página de publicación con Tailwind
02:33 min - 29

Formulario de búsqueda con Laravel y LIKE
04:18 min - 30

Cómo detectar el problema N+1 en Laravel
06:12 min
Cierre
Relaciones entre tablas con belongsTo en Laravel
Resumen
Crear relaciones entre tablas en Laravel te permite conectar datos sin duplicar información. Aprenderás a vincular publicaciones con usuarios usando foreign keys, factories y el método belongsTo de Eloquent, una práctica clave para cualquier desarrollador backend que trabaje con bases de datos relacionales.
La idea central es simple: un usuario tiene muchas publicaciones y cada publicación pertenece a un usuario. Vamos a traducir esa lógica al código.
¿Cómo agregar una clave foránea en una migración de Laravel?
Todo empieza en el archivo de migración de la tabla de publicaciones. Ahí defines la columna que servirá como puente hacia la tabla de usuarios.
La configuración del campo necesita tres características concretas:
- Tipo entero, porque guardará un id numérico.
- Sin signo (unsigned), para aceptar solo números positivos.
- Nombre
user_id, siguiendo la convención de Laravel.
Así se ve el campo y su relación foránea dentro de la migración:
php $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users');
La primera línea crea la columna. La segunda le dice a la base de datos que ese user_id apunta al campo id de la tabla users. Y aquí viene lo interesante: la relación queda registrada en la base de datos, pero Laravel todavía no la conoce a nivel de modelo.
¿Qué hace
unsigneden una migración? Restringe la columna a valores numéricos positivos. Es el estándar para foreign keys porque los id nunca son negativos.
¿Cómo poblar la nueva columna con un Factory?
Al agregar un campo nuevo, tus datos seed o falsos también deben actualizarse. Si no lo haces, el factory generará registros incompletos y romperá las pruebas.
En el archivo factory de la publicación añades el user_id con un valor fijo:
php 'user_id' => 1,
Se asigna 1 porque en este punto del proyecto solo existe un usuario de prueba. Como trabajas con datos semilla, puedes ejecutar de nuevo las migraciones, borrar todo y reconstruir la base desde cero sin perder información valiosa.
Esta técnica funciona perfecto cuando arrancas un proyecto y los datos aún no son importantes. Más adelante, cuando tengas información real, este tipo de cambios requieren otra estrategia.
¿Por qué Laravel necesita el método belongsTo en el modelo?
La relación ya existe en la base de datos, pero Eloquent es independiente: necesita que se la declares en el modelo.
Si intentas mostrar el nombre del usuario directamente desde una publicación, el sistema lanza un error indicando que intenta acceder a una propiedad name sobre un objeto nulo. Ese error es la señal de que falta declarar la relación en el modelo Post.
Dentro del modelo Post agregas el método en singular, porque cada publicación pertenece a un único usuario:
php public function user() { return $this->belongsTo(User::class); }
El nombre del método, user, se escribe en singular de forma intencional. Esto le indica a Laravel que la relación es de pertenencia: una publicación pertenece a un usuario.
¿Qué diferencia hay entre
hasManyybelongsTo?belongsTose usa en el modelo hijo (Post) para apuntar al padre.hasManyse usa en el modelo padre (User) para listar muchos hijos. Son las dos caras de la misma relación.
¿Cómo mostrar el usuario de cada publicación en la vista?
Una vez registrada la relación en el modelo, ya puedes acceder al usuario desde cualquier publicación en tus vistas Blade.
En la página del blog, dentro del listado de publicaciones, agregas un span que imprima el nombre del autor:
blade <span>{{ $post->user->name }}</span>
Al actualizar el navegador, cada publicación muestra correctamente el nombre del usuario que la creó. Ese es el beneficio real de las relaciones: no duplicas el nombre del usuario en cada publicación, solo guardas su id y Eloquent se encarga del resto.
Conceptos clave para dominar relaciones en Laravel
Durante el desarrollo aparecen varios términos que conviene entender bien:
- Migración: archivo que define la estructura de la tabla y permite versionar cambios en la base de datos.
- Foreign key: campo que conecta una tabla con otra, garantizando integridad referencial.
- Factory: clase que genera datos falsos para pruebas y desarrollo.
- Eloquent: el ORM de Laravel que traduce relaciones SQL en métodos PHP.
- belongsTo: método que declara una relación de pertenencia en el modelo hijo.
La práctica para esta clase es clara: configura la migración con la foreign key, ajusta el factory con el user_id, refresca la base de datos y agrega el método user() en el modelo Post. Después modifica la vista para mostrar quién creó cada publicación.
¿Ya lograste mostrar el nombre del autor en tu blog? Cuéntame en los comentarios qué dificultades encontraste al configurar tu primera relación.