Laravel Rating, lógica de valoraciones para proyectos Laravel
Laravel Rating es uno de esos paquetes que nos permite añadir toda la lógica necesaria para añadir un sistema de valoraciones a nuestros proyectos Laravel.
Lo mejor de Laravel Rating es que podemos decir qué modelos pueden valorar, pero no sólo eso, también podemos decir qué modelos pueden ser valorados. Por ejemplo, queremos que puedan valorar los usuarios (Modelo User), y queremos que los modelos que puedan ser valorados sean los Posts y Proyectos (Modelos Post y Project).
Instalar y configurar Laravel Rating
Aunque existen muchas dependencias para realizar esta tarea, yo me he decantado por una que es realmente sencilla de utilizar y, lo que más me gusta, es que únicamente se centra en esta tarea, lógica para sistemas de valoraciones en Laravel.
La lógica de Laravel Rating reside en una tabla con relaciones polimórficas que gestiona el modelo que valora y el modelo valorado, nada más.
Permitir que el modelo User realice valoraciones
Para permitir que los usuarios puedan realizar valoracionesk debemos ajustar el modelo User, ya que es el encargado de gestionar la autenticación en Laravel, por lo menos por defecto.
Implementando el contrato Rater y utilizando el Trait Rater tenemos suficiente para que nuestros usuarios puedan empezar a valorar, ahora nos falta qué valorar.
Modelo Curso para realizar valoraciones
El modelo que vamos a utilizar para añadir valoraciones va a ser un modelo Curso, es un caso típico, aquí en la plataforma se utiliza este sistema contra este modelo.
Para permitir que los cursos puedan ser valorados, debemos ajustar el modelo Course de la siguiente forma.
Fíjate que tanto el contrato como el Trait han cambiado, ahora son Rateable en lugar de Rater y CanBeRated en lugar de CanRate, es un matiz importante.
Migraciones, factorías y seeds
Vamos a crear la lógica necesaria para poder crear valoraciones con nuestro sistema de rating.
Realizar valoraciones con nuestros usuarios
Finalmente, para que los usuarios puedan realizar valoraciones, sólo debemos aplicar la siguiente lógica donde necesites.