balajidharma/laravel-reaction
Reaction management system for Laravel models
6,043
3
| Install | |
|---|---|
composer require balajidharma/laravel-reaction |
|
| Latest Version: | v2.0.1 |
| License: | MIT |
| Last Updated: | May 14, 2026 |
| Links: | GitHub · Packagist |
Maintainer: balajidharma
Overview
Laravel Reaction allows you to add reaction to your Laravel models with support for different reaction types.
Table of Contents
Installation
- Install the package via composer
composer require balajidharma/laravel-reaction
- Publish the migration with
php artisan vendor:publish --provider="BalajiDharma\LaravelReaction\ReactionServiceProvider" --tag="migrations"
- Run the migration
php artisan migrate
- To Publish the config/reaction.php config file with
php artisan vendor:publish --provider="BalajiDharma\LaravelReaction\ReactionServiceProvider" --tag="config"
- Preparing your model
To associate reactor with a model, the model must implement the HasReactor trait:
<?php
namespace App\Models;
use BalajiDharma\LaravelReaction\Traits\HasReactor;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends extends Authenticatable
{
use HasReactor;
To associate reaction with a model, the model must implement the HasReaction trait:
<?php
namespace BalajiDharma\LaravelForum\Models;
use BalajiDharma\LaravelReaction\Traits\HasReaction;
use Illuminate\Database\Eloquent\Model;
class Thread extends Model
{
use HasReaction;
Add Reaction
use the react method to save the reaction
<?php
$thread->react($type, $name, $user = null, $value = null);
// React with current user
$thread->react('likes', 'like');
$thread->react('likes', 'unlike');
$thread->react('stars', 'star', null, 5);
// React by another user
$user = User::find(1);
$thread->react('likes', 'like', $user);
Remove Reactions
<?php
$thread->removeReaction($type, $name = null, $user = null);
// Remove reactions by type
$thread->removeReaction('likes');
// Remove reactions by type and name
$thread->removeReaction('likes', 'like');
$thread->removeReaction('likes', 'unlike');
// Remove reactions by user
$user = User::find(1);
$thread->react('likes', 'like', $user);
Get Reactions
<?php
$thread->getReactions($type, $name = null, $user = null);
// Get reactions by type
$thread->getReactions('likes');
// Get reactions by type and name
$thread->getReactions('likes', 'like');
$thread->getReactions('likes', 'unlike');
// Get reactions by user
$user = User::find(1);
$thread->getReactions('likes', null, $user);
$thread->getReactions('likes', 'like', $user);
Reaction summary
<?php
$thread->reactionSummary($type);
// example
$article->reactionSummary('likes')->toArray();
// output
/*
[
"like" => 8,
"unlike" => -2,
]
*/
Check if user reacted
<?php
// check for current user
$thread->isReactBy('likes');
// check for other user
$user = User::find(1);
$thread->isReactBy('likes', $user);
Demo
The "Basic Laravel Admin Penel" starter kit come with Laravel Reaction
Related Packages
binafy/laravel-reactions
Laravel Reactions is a simple and flexible package that allows you to add reacti...
6,640
88
zaghadon/laravel-social
A full and simple Toolkit Package for instantly adding Social Features to Larave...
76
1
cybercog/laravel-love
Make Laravel Eloquent models reactable with any type of emotions in a minutes!
353,311
1,204