oroalej/laravel-likeable

Reusable like module for Laravel

v1.0.0 2022-09-27 01:47 UTC

This package is auto-updated.

Last update: 2024-04-27 05:28:58 UTC


README

Composer Install

composer require oroalej/laravel-likeable

Run migration

php artisan migrate

Usage

Traits

// Liker
use Illuminate\Foundation\Auth\User as Authenticatable;
use Oroalej\Likeable\Models\Traits\Liker;

Class User extends Authenticatable 
{
  use Liker;
}

// Likeable
use Illuminate\Database\Eloquent\Model;
use Oroalej\Likeable\Models\Traits\Likeable;

Class Post extends Model 
{
  use Likeable;
}

API

$user = User::find(1);
$post = Post::find(1);

// Liker
$user->like($post);
$user->unlike($post);

// Likeable
$post->isLikedBy($user);
$post->unlikedBy($user);

Getting Data

// Liker
$user = User::find(1);
$user->liked(Post::class);
$user->liked();

// Likeable
$post = Post::find(1);
$post->likers(User::class);
$post->likers()

Getting Count

// Liker
$user = User::find(1);
$user->getLikeCountByType(Post::class);
$user->getTotalLikeCount();

// Likeable
// To avoid the n+1 issue, please make sure to include `with('likeableCounter')` when using `likes_count`
$post = Post::with('likeableCounter')->find(1);
$post->likes_count;

$result = Post::with('likeableCounter')->get();
$result->first()->likes_count;