phpdominicana/reactify

Reactify a easy way to add likes to comment, photos, etc.

v1.4.0 2025-06-27 16:51 UTC

This package is auto-updated.

Last update: 2025-06-27 16:58:45 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Add reactions (like 👍, dislike 👎, love ❤️, haha 😄, etc.) to any Eloquent model in Laravel. Perfect for blogs, comments, posts, reviews, and more.

Installation

You can install the package via composer:

composer require phpdominicana/reactify

You can publish and run the migrations with:

php artisan vendor:publish --tag="reactify-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --tag="reactify-config"

Usage

Add the trait to the model you want to add reactions.

use App\Traits\HasReactions;

class Post extends Model
{
    use HasReactions;
}

Sample usage

$post->react($userId, Reaction::LIKE);
$post->unReact($userId, Reaction::LIKE);
$post->reactions(Reaction::LIKE); // returns integer count

Get total reactions for all types

$post->reactionCounter; // returns a ReactionCounter model with all counts

Available Reaction Types

You can define your own reactions via constants:

enum Reaction: string
{
    case LIKE = 'like';
    case DISLIKE = 'dislike';
    case LOVE = 'love';
    case ANGRY = 'angry';
    case SAD = 'sad';
    case HAPPY = 'happy';
    case WOW = 'wow';
    case CARE = 'care';
    case THANKFUL = 'thankful';
    case SUPPORT = 'support';
    case LAUGH = 'laugh';
    case CONFUSED = 'confused';
    case HUG = 'hug';
    case KISS = 'kiss';
    case SMILE = 'smile';
    case HEART = 'heart';
    case STAR = 'star';
    case THUMBS_UP = 'thumbs_up';
    case THUMBS_DOWN = 'thumbs_down';
    case CLAP = 'clap';
    case BRAVO = 'bravo';
    case CELEBRATE = 'celebrate';
    case EYES = 'eyes';
    case HANDSHAKE = 'handshake';
    case PRAY = 'pray';
    case SALUTE = 'salute';
    case TROPHY = 'trophy';
    case WELCOME = 'welcome';
    case WINK = 'wink';
    case YUMMY = 'yummy';
    case COOL = 'cool';
    case DROOL = 'drool';
    case FLOWER = 'flower';
    case GIFT = 'gift';
    case GOOD = 'good';
    case HIGH_FIVE = 'high_five';
    case HUGS = 'hugs';
    case KISSES = 'kisses';
    case LOVE_YOU = 'love_you';
    case MISS_YOU = 'miss_you';
    case NO = 'no';
    case OK = 'ok';
    case OK_HAND = 'ok_hand';
    case PARTY = 'party';
    case PEACE = 'peace';
    case PIZZA = 'pizza';
    case PRIDE = 'pride';
    case QUESTION = 'question';
    case RAINBOW = 'rainbow';
    case ROCKET = 'rocket';
    case SICK = 'sick';
    case SORRY = 'sorry';
    case SPARKLES = 'sparkles';
    case STRONG = 'strong';
    case SUN = 'sun';
    case THANK_YOU = 'thank_you';
    case THINKING = 'thinking';
}

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.