Comparte en Facebook Twitter Google+

Laravel Love

El paquete Laravel Love nos permite simplificar la gestión de las reacciones de Me gusta y No me gusta en los modelos de Eloquent. Con él podemos hacer que cualquier modelo pueda enviar reacciones a otros modelos, y que estos puedan recibirlas fácilmente. A continuación te enseñaremos cómo trabajar con Laravel Love en una aplicación.

Nueva instalación

Vamos a comenzar haciendo una nueva instalación de Laravel ejecutando el siguiente comando en la terminal:

composer create-project laravel/laravel love

Si tienes dudas o problemas con la instalación te invito a observar la Instalación de Composer y Laravel  en el Curso de Laravel desde cero.

Es necesario además que se enlace el proyecto a una base de datos editando el archivo .env ubicado en la raíz del proyecto y colocando las credenciales necesarias para la conexión.

Configuración del proyecto

Para comenzar, nuestro proyecto solo tendrá un modelo adicional que será Post, el cual recibirá las reacciones de los usuarios (Me gusta o No me gusta).  Para crearlo ejecutaremos el siguiente comando, donde además le indicaremos que también queremos una migración junto con un Model Factory:

php artisan make:model Post -mf

Seguidamente debemos agregar las relaciones correspondientes en los modelos, comenzamos agregando la relación en el modelo User:

Continuamos ahora agregando la relación en el modelo Post :

Vamos a rellenar la migración recién creada para la tabla posts de la siguiente forma:

Seguimos ahora con la preparación del Model Factory PostFactory creado por el comando ejecutado anteriormente colocando el siguiente código:

Por último, vamos a editar el archivo database/seeders/DatabaseSeeder.php para crear unos datos de prueba.  Evitaremos crear seeders para no extendernos pero tú puedes hacerlo siguiendo el tutorial sobre Inserción de datos con los seeders de Laravel del Curso de Laravel desde cero.

Con el código escrito anteriormente estaríamos creando 10 usuarios con 3 artículos en posesión de cada uno.

Instalación del paquete Laravel Love

Para instalar el paquete debemos ejecutar el siguiente comando en nuestra terminal:

composer require cybercog/laravel-love

Para utilizar este paquete requieres una versión 5.6 de Laravel como mínimo.

El paquete nos trae una migración. Si deseas realizar cambios en las migraciones, primero debemos publicarlas en la aplicación con el siguiente comando:

Finalmente ejecutamos las migraciones y los seeders con el comando:

php artisan migrate --seed

Configuración del paquete en los modelos

Una de las cosas que me parece muy interesante del paquete es que podemos hacerle saber a un modelo si tienen la posibilidad de dar likes/dislikes, recibirlos o ambos. Esto se puede hacer gracias a las Interfaces (Contracts) y a los Traits que vienen incluidos en el paquete.

Vamos a comenzar definiendo que nuestro modelo Post puede recibir likes/dislikes de esta forma:

Con esto le indicamos al modelo que debe implementar la interfaz Cog\Contracts\Love\Likeable\Models\LikeableLaravel y que use el trait Cog\Laravel\Love\Likeable\Models\Traits\Likeable que contiene los métodos para darle la facultad de recibir likes/dislikes.

Ahora le decimos a nuestro modelo User que tienen la posibilidad de dar likes y dislikes:

Muestra del funcionamiento

Para comenzar ejecutamos en la terminal el siguiente comando para generar un sistema de login y registro:

php artisan make:auth

Continuamos ahora editando nuestras rutas quedando nuestro archivo routes/web.php de esta forma:

Procedemos a crear un controlador llamado PostController ejecutando el comando php artisan make:controller PostController y lo dejamos así:

Como se puede notar el modelo Post tiene algunos métodos del paquete gracias al trait Likeable que hemos implementado anteriormente. Los métodos likeBy, unlikeBy, dislikeBy y undislikeBy pueden recibir un usuario de forma opcional pero al no pasarlo se toma el usuario autentificado.

Seguidamente agregaremos un par vistas, comenzando por la vista resources/views/posts/index.blade.php:

Y continuamos con la vista resources/views/posts/show.blade.php:

Por último, agregamos un enlace en nuestra plantilla resources/views/layouts/app.blade.php para hacer referencia al listado de posts:

Finalmente, tendremos un listado de posts en la dirección /posts donde al dar clic sobre el enlace de cada uno podemos observar el post y los botones que hemos colocado anteriormente como se muestra a continuación:

Resultado Laravel Love en Styde

Puedes obtener todo el código del tutorial en este repositorio de GitHub. Si deseas conocer más sobre este paquete puedes visitar su repositorio oficial.

Con esto terminamos este tutorial, si tienes alguna duda, sugerencia o alguna pregunta puedes hacerla en los comentarios y con gusto te estaremos ayudando. Por favor no olvides compartir este contenido en tus redes sociales para seguir apoyándonos a seguir ofreciendo contenido gratuito como esté a toda la comunidad.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Aprende desarrollo web con Laravel, Vue.js y mucho más a partir de 9 USD al mes: ver planes.