balajidharma/laravel-reaction

Reaction management system for Laravel models

Maintainers

👁 balajidharma

Package info

github.com/balajidharma/laravel-reaction

pkg:composer/balajidharma/laravel-reaction

Statistics

Installs: 5 048

Dependents: 3

Suggesters: 0

Stars: 3

Open Issues: 0

v2.0.1 2026-05-13 01:03 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

This package is auto-updated.

Last update: 2026-06-14 23:49:03 UTC


README

Reaction management system for Laravel models.

👁 Total Downloads
👁 Latest Stable Version
👁 License

Overview

Laravel Reaction allows you to add reaction to your Laravel models with support for different reaction types.

👁 image

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