Laravel Markable es un paquete para integrar likes, bookmarks, favoritos, reacciones y marcas personalizadas en tu aplicación.
La manera básica de usarlo es añadiendo un Markable trait y los tipos de «marcas» que deseas permitir en un modelo dado. Por ejemplo, si tienes un modelo Course y deseas permitir que los usuarios den like al curso:
Ejemplo de Uso
namespace AppModels;
use IlluminateDatabaseEloquentModel;
use MaizeMarkableMarkable;
use MaizeMarkableModelsLike;
class Course extends Model
{
use Markable;
protected $fillable = [
'title',
'description',
];
protected static $marks = [
Like::class,
];
}
Con ese modelo en su lugar, así es como gestionas las marcas usando este paquete:
Gestionar Marcas ⚙️
use AppModelsCourse;
use MaizeMarkableModelsLike;
// Marca el curso como "liked" para el usuario dado
Like::add($course, $user);
// Desmarca el curso como "liked" para el usuario dado
Like::remove($course, $user);
// Cambia el estado de like para el usuario dado
Like::toggle($course, $user);
// Devuelve si el usuario dado le gusta o no el curso
Like::has($course, $user);
// Devuelve cuántos usuarios le gustan un curso
Like::count($course);
El modelo Like está integrado en el paquete, pero también puedes crear modelos personalizados de marcas, como Pledge, que permite a un usuario comprometerse con una donación para una causa.
Tipos de Marcas Integrados ✅
El paquete incluye varios tipos de marcas por defecto, incluyendo:
- Bookmark
- Favorite ⭐
- Like ❤️
- Reaction
Consultar Marcas
Por otro lado, si deseas ver todas las marcas (por ejemplo, likes) de un usuario para que puedan ver qué cursos les gustan:
// Todos los cursos con un like del usuario dado
Course::whereHasLike(
auth()->user()
)->get();
// Todos los posts con una reacción 'heart' del usuario dado
Post::whereHasReaction(
auth()->user(),
'heart'
)->get();
Más Información
Puedes aprender más sobre este paquete, obtener instrucciones completas de instalación y ver el código fuente en GitHub.
Artículos Relacionados
Descubre más desde CIBERED
Suscríbete y recibe las últimas entradas en tu correo electrónico.
