Laravel práctico: Como relacionar una tabla con otra tabla ‘Pivot’.

Manu Pijierro
2 min readAug 26, 2015

--

Hace unas semanas me topé con un problema de relaciones entre tablas en Laravel 5 manejando el ORM Eloquent. Dicho problema consistía en relacionar una tabla con otra tabla ‘Pivot’, que lógicamente, ya mantenía una relación ManyToMany (N:M) entre otras dos tablas.

Es decir, por parte de la relación ManyToMany tengo dos tablas T1 y T2 que conforman la tabla T3. Ahora, por otro lado, tengo una tabla T4 que está relacionada con T3, es decir, una fila de la tabla T4 se relaciona con una fila de la tabla T3. Esto a nivel de base de datos.

A nivel de código, de modelos, hay que tener en cuenta que en este punto lo que tenemos son 3 modelos que surgen de las tablas T1, T2 y T4. Como la tabla T3 es una tabla pivot, la maneja Laravel de forma ‘automática’. Así que desde el modelo T4, mi tabla ‘suelta’, no podía relacionarla con las tablas T1 o T2, puesto que tenía delante la tabla T3.

Tardé tiempo en encontrar una solución adecuada a este problema pero al final preguntando en foros y leyendo mucho la encontré. La forma de solucionarlo es creando un modelo propio para la tabla T3. Como hemos dicho, por defecto, esta tabla carece de modelo al ser una tabla pivot, así que nuestra misión ahora sería crear un modelo específico para esta tabla T3 y a partir de él, comenzar a enlazar mediante relaciones las tablas T1, T2 y T4. Estas relaciones serían las siguientes.

  • En el modelo de la tabla T1 indicamos la siguiente relación: T1 hasMany T3
  • En el modelo de la tabla T2 indicamos la siguiente relación: T2 hasMany T3
  • En el modelo de la tabla T4 indicamos la siguiente relación: T4 hasMany T3

Y ahora el cambio clave:

  • En el modelo de la tabla T3 indicamos las siguientes relaciones: T3 belongsTo T1, T2, T4.

De esta forma, tenemos el modelo de la tabla T4 relacionado con los modelos de las tablas T1 y T2 a través del modelo de la tabla pivot T3. No he indicado nada pero lógicamente hay que definir y crear todas las claves foráneas correspondientes en cada tabla para adecuarse a estas relaciones.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Responses (1)

Write a response