Relaciones polimórficas en Laravel 5

Relaciones polimórficas en Laravel 5
Las Relaciones polimórficas en Laravel 5 son aquellas que son capaces de relacionarse con otra entidad sin conocerla, por ejemplo, imagina que tienes una aplicación donde muestras vídeos, posts, álbumes y en todas ellas quieres tener la posibilidad de añadir una sección de comentarios, es cierto que puedes montar una tabla de post_comments, video_comments y album_comments, pero si eso crece se va a volver muy completo de manejar.

En Laravel 5 y gracias a Eloquent podemos resolver este problema de una forma mucho más sencilla, simplemente deberíamos crear primero las migraciones.

Lo más importante de las migraciones anteriores es la migración de la tabla comments, y en concreto la siguiente línea.

Esa línea será capaz de crear en la tabla comments 2 columnas, commentable_id y commentable_type, commentable_id será la foreign key y commentable_type el modelo, por ejemplo App\Comment.

Configurar modelos para manejar relaciones polimórficas en Laravel 5

Ahora podríamos crear los modelos para poder tener acceso a los comentarios de los posts, vídeos y álbumes.

Si ahora por ejemplo necesitas acceder a todos los comentarios de un vídeo, simplemente deberías hacer lo siguiente, y será exactamente igual para el resto de modelos relacionados.

Si en cambio quieres acceder al modelo relacionado a un comentario, haz lo siguiente.

El ejemplo anterior sería una relación de uno a muchos, un vídeo muchos comentarios, un post muchos comentarios y un álbum muchos comentarios, exactamente de la misma forma podrías utilizar morphOne, pero en este caso de una relación de 1:1, este caso sería válido en muchas ocasiones, por ejemplo para manejar el SEO de los posts, de los álbumes, de los vídeos, o incluso para crear entidades mucho más dinámicas añadiendo columnas.

Eso es todo, espero que te haya parecido interesante, puedes ver que manejar Relaciones polimórficas en Laravel 5 es muy sencillo y nos ahorra mucho trabajo, cualquier duda escribe un comentario.

Añade un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies
PHP 7, React Native, Angular, Ionic, Vue.js 2 y mucho más, aprende todo desde 0 con nuestros cursos ahoraVer cursos