nanosolutions / laravel-likeable
Trait for Laravel Eloquent models to allow easy implementation of a 'like' or 'favorite' or 'remember' feature.
1.3.1
2016-05-11 13:15 UTC
Requires
- php: >=5.5.0
- illuminate/database: >=5.0
- illuminate/support: >=5.0
Requires (Dev)
- mockery/mockery: ~0.9
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~4.0
README
This is a fork from rtconner/laravel-likeable by Robert Conner - smartersoftware.net , thank you for smart software :)
We have added option to have dislike as separate field (counter) or any other countable social reaction (follow,hate,dislike,like ..)
TODO:
Inspired by other laravel-likeable packages, will add options to tracks reaction with timestamp, which gives us more deep metrics etc..
Trait for Laravel Eloquent models to allow easy implementation of a "like" or "favorite" or "remember" feature.
Laravel 5 Documentation
Laravel 4 Documentation
Composer Install (for Laravel 5+)
composer require nanosolutions/laravel-likeable "~1.3"
Install and then run the migrations
'providers' => [ \Nano\Likeable\LikeableServiceProvider::class, ],
php artisan vendor:publish --provider="Nano\Likeable\LikeableServiceProvider" --tag=migrations
php artisan migrate
Setup your models
use Nano\Likeable\Likeable; class Article extends Model { use Likeable; }
Sample Usage
$article->like(); // like the article for current user $article->like($myUserId); // pass in your own user id $article->like(0); // just add likes to the count, and don't track by user $article->unlike(); // remove like from the article $article->unlike($myUserId); // pass in your own user id $article->unlike(0); // remove likes from the count -- does not check for user // Dislike (new metric) $article->like('dislike'); // alias -> $article->dislike(); $article->unlike('dislike'); // alias -> $article->dislike($myUserId); // Or anything you want (no alias) $article->like('follow'); $article->unlike('follow'); $article->likeCount; // get count of likes $article->dislikeCount; // get count of dislikes $article->likes; // Iterable Illuminate\Database\Eloquent\Collection of existing likes $article->dislikes; // Iterable Illuminate\Database\Eloquent\Collection of existing disklikes $article->liked(); // check if currently logged in user liked the article $article->disliked(); // check if currently logged in user disliked the article $article->liked($myUserId); Article::whereLiked($myUserId) // find only articles where user liked them ->with('likeCounter') // highly suggested to allow eager load ->get();
Credits
- Robert Conner - http://smartersoftware.net