balajidharma / laravel-reaction
Reaction management system for Laravel models
v1.0.1
2024-12-27 18:15 UTC
Requires
- illuminate/support: ^10.0|^11.0
README
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