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.
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.
Existen tres tipo de relaciones en una base de datos:
Una vez se definen las relaciones entre las tablas, se debe plasmar en las migraciones según las relaciones que se tengan.
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');