balajidharma/laravel-reaction

Reaction management system for Laravel models

v1.0.1 2024-12-27 18:15 UTC

This package is auto-updated.

Last update: 2024-12-27 18:16:04 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