Relacionar tablas en Laravel

Relacionar tablas en Laravel 10

Hola, ¿Cómo están? Continuando con el curso de Laravel 10, hoy veremos cómo crear las relaciones entre tablas en las migraciones en Laravel 10.

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

Relaciones en tablas

Las relaciones en la base de datos nos permiten asociar tablas entre sí y así combinar de manera eficiente los datos almacenados en ellos.

Las relaciones generalmente se establecen cuando se diseña la base de datos, una forma de diseñar efectivamente la base de datos es utilizando el modelo entidad relación donde se van definiendo las relaciones entre las tablas, para posteriormente plasmarlas en las migraciones.

Modelo entidad relación

Existen tres tipo de relaciones en una base de datos:

  • Relación uno a uno, cada registro de una tabla corresponde a un único registro de otra tabla.
  • Relación uno a muchos, un registro de una tabla corresponde a muchos registros de otra tabla.
  • Relación muchos a muchos, muchos registros de una tabla corresponden a muchos registros de otra tabla.

Crear las relaciones en las migraciones

Una vez se definen las relaciones entre las tablas, se debe plasmar en las migraciones según las relaciones que se tengan.

Relación uno a uno

La relación que existe entre la tabla “Proveedores” y “Perfil” es una relación uno a uno, un proveedor tiene un solo perfil, y un perfil pertenece a un solo proveedor. Por lo que la clave foránea irá a la entidad más débil en nuestro caso se creará el campo “proveedor_id“ en la tabla “Perfil” que haría referencia al campo “ID” de la tabla “Proveedores”.

Primeramente, crearemos la tabla “Proveedores” con el siguiente comando de Artisan:

php artisan make:migration create_providers_table

Ahora crearemos las columnas de la tabla “Proveedores”.

$table->string('name', 35);
$table->string('email', 75);
$table->string('phone', 15)->nullable();
$table->string('type', 15)->default('Distribuidor');

Seguidamente, crearemos la tabla “Perfil” con el siguiente comando:

php artisan make:migration create_profiles_table

Ahora crearemos las columnas de la tabla “Perfil” y la relación que existe con la tabla “Proveedores”.

La palabra reservada foreign nos permite especificar que el campo “provedor_id” es un campo que hace relación con la tabla “proveedores”.

$table->string('career', 35);
$table->string('web_page', 35)->nullable();
$table->string('company', 35);
$table->unsignedBigInteger('provider_id');
$table->foreign('provider_id')->references('id')->on('providers')->onDelete('cascade');

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *