balajidharma/laravel-reaction
Reaction management system for Laravel models
6,414
3
| Install | |
|---|---|
composer require balajidharma/laravel-reaction |
|
| Latest Version: | v2.0.1 |
| Laravel: | 11 · 12 · 13 |
| Older releases: | 10 |
| License: | MIT |
| Last Updated: | May 14, 2026 |
| Links: | GitHub · Packagist |
Maintainer: balajidharma
Laravel Reaction
Reaction management system for Laravel models.
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
Version History
| Version | Released | Laravel | License |
|---|---|---|---|
| v2.0.1 | ^11.0| | MIT | |
| v1.0.7 | ^10.0| | MIT | |
| v1.0.6 | ^10.0| | MIT | |
| v1.0.5 | ^10.0| | MIT | |
| v1.0.4 | ^10.0| | MIT | |
| v1.0.3 | ^10.0| | MIT | |
| v1.0.2 | ^10.0| | MIT | |
| v1.0.1 | ^10.0| | MIT |