New Maintainer
This package now maintined by Ahmed Nagi
Laravel-Ratings
Laravel package that allows you to rate, like & dislike or vote up & down your models with a simple and clear way.
If you see this packge can help, Don't skimp on me with a star :)
Rating
include CanRate
trait into your user model to apply rating functions
use Nagy\LaravelRating\Traits\Rate\CanRate;
class User extends Model
{
use CanRate;
include Rateable
trait to your model that will be rateable
use Nagy\LaravelRating\Traits\Rate\Rateable;
class Post extends Model
{
use Rateable;
now you can rate your models as the following:
$user->rate($postModel, 5);
also you can unrate your models as the following:
$user->unrate($postModel);
// alternatively
$user->rate($postModel, -1);
// or
$user->rate($postModel, false);
// or
$user->rate($postModel, null);
get the average ratings of a model
$post->ratingsAvg();
get the total count of ratings of a model
$post->ratingsCount();
get the rated models by a user
$user->rated(); // returns a collection of rated models
Voting
include CanVote
trait into your user model to apply rating functionalties
use Nagy\LaravelRating\Traits\Vote\CanVote;
class User extends Model
{
use CanVote;
include Votable
trait to your model that will be votable
use Nagy\LaravelRating\Traits\Vote\Votable;
class Post extends Model
{
use Votable;
now you can vote your model as the following:
// up vote or +1 your model
$user->upVote($postModel);
// down vote or -1 your model
$user->downVote($postModel);
get total votes count
$postModel->votesCount();
get total up votes count
$postModel->upVotesCount();
get total down votes count
$postModel->downVotesCount();
get the up voted models by a user
$user->upVoted(); // returns a collection of up voted models
get the down voted models by a user
$user->downVoted(); // returns a collection of down voted models
get the total voted models by a user
$user->voted(); // returns a collection of total voted models;
Like & Dislike
include CanLike
trait into your user model to apply like and dislike functionalties
use Nagy\LaravelRating\Traits\Like\CanLike;
class User extends Model
{
use CanLike;
include Likeable
trait to your model that will be likeable
use Nagy\LaravelRating\Traits\Like\Likeable;
class Post extends Model
{
use Likeable;
now you can like your model as the following:
// like
$user->like($postModel);
// dislike
$user->dislike($postModel);
get total likes count
$postModel->likesCount();
get total dislikes count
$postModel->dislikesCount();
get total likes and dislikes count
$postModel->likesDislikesCount();
get the liked models by a user
$user->liked(); // return a collection of liked models;
get the disliked models by a user
$user->disliked(); // return a collection of disliked models;
get the total liked and disliked models by a user
$user->likedDisliked(); // return a collection of liked and disliked models;
Install
for laravel 8.* , 7.* , 6.*
composer require nagy/laravel-rating
for laravel 5.*
composer require nagy/laravel-rating:^1.2
in your config/app.php
'providers' => [
...
Nagy\LaravelRating\LaravelRatingServiceProvider::class
],
'aliases' => [
...
"LaravelRating" => \Nagy\LaravelRating\LaravelRatingFacade::class,
]
You don't need this step in laravel5.5
package:discover
will do the job :)
publish the migrations
php artisan vendor:publish --tag=laravelRatings
run the migrations
php artisan migrate