oroalej / laravel-likeable
Reusable like module for Laravel
v1.0.0
2022-09-27 01:47 UTC
Requires
- php: ^8.0|^8.1
- laravel/framework: ^9.0
Requires (Dev)
- laravel/pint: ^1.2
- orchestra/testbench: 7.*
- phpunit/phpunit: ^9.5.10
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;