Cargando



Relación muchos a muchos con Laravel y Eloquent

En este tutorial veremos como establecer un modelo de muchos a muchos utilizando Eloquent de una forma sencilla y que nos permita obtener una tabla intermedia.


ago 08 2014 23:23
Avanzado
ago 11 2014 23:17
Laravel nos ayuda a trabajar con la base de datos al simplificar el lenguaje SQL, ya no tenemos que hacer consultas si no lo deseamos, al utilizar su ORM Eloquent, con ello podremos inclusive trabajar sistemas de relaciones entre tablas mucho más complejos sin tener que hacer una sola consulta directa a la base de datos.

Para lograr esto debemos establecer los identificadores que se asocien y además incorporar en el modelo un tipo de atributo que indique dicha relación.

¿Cómo crear la tabla intermedia?


El primer paso que debemos dar para crear la relación muchos a muchos es generar la tabla intermedia, esta debe contener los campos que la relacionen con las tablas primarias, para ello debemos seguir los siguientes pasos:

1- Vamos a generar la migración utilizando artisan con el siguiente comando:

php artisan migrate:make create_show_user

2- En este caso estamos generando una tabla que combinará una tabla llamada Show y la tabla User de nuestra aplicación.

3- Luego en el método up() generaremos los campos de la tabla, con ello cada vez que corramos la migración se creará la tabla:

laravel_rel_muchos_muchos.jpg


Generación de modelos


El siguiente paso es construir nuestros modelos, para ello debemos crear un archivo con el nombre de la tabla, luego dentro vamos colocar en el constructor la relación con la tabla, veamos el modelo de cada una de las tablas que vamos a asociar.

1- En el archivo Show.php en la ruta app/models vamos a colocar lo siguiente:

laravel_rel_muchos_muchos2.jpg


2- Vemos que tenemos un método llamado belongsToMany(), y le pasamos el nombre del modelo al que se va a asociar, esto hace que Eloquent al crear el objeto del modelo sepa que tiene una relación con una tabla intermedia junto con esa tabla.

3- Ahora vamos a crear un archivo para la tabla Show, en ella repetiremos lo mismo pero asociándola con User:



laravel_rel_muchos_muchos3.jpg


Ya hasta este punto tenemos la funcionalidad de base de datos necesaria para poder trabajar sobre nuestra tabla intermedia.

Insertando datos en la tabla intermedia


Vamos a crear una ruta donde vamos a ingresar un usuario y a este le vamos a asignar los shows, para ello debemos crear el objeto del modelo User y hacer una inserción de un registro, luego vamos a llamar al método shows() con el cual podremos asignar el registro nuevo, veamos:



laravel_rel_muchos_muchos4.jpg


En esta ruta también vemos que utilizamos un método llamado attach(), este es el que nos permite hacer la asociación correspondiente, luego obtenemos los datos y le hacemos un var_dump() para ver los datos completos.

Con esto hemos creado la tabla intermedian y hemos hecho una relación muchos a muchos de forma básica, sin embargo esto no es ni el 1% de lo que podemos lograr, por supuesto la investigación y la práctica es la clave.

Con esto terminamos este tutorial, ya hemos construido nuestra relación de muchos a muchos en Eloquent sin necesidad de hacer una sola consulta de SQL directamente contra nuestra base de datos.

¿Te ayudó este Tutorial?


1 Comentarios


Cristian Camilo Ledesma
nov 07 2017 19:54

¿No es necesario crear modelo intermedio, pero sí la migración intermedia?

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X