Laravel Rateable
, (*1)
, (*2)
FOR PERSONAL USE. DON'T USE THIS FORK. USE: https://github.com/willvincent/laravel-rateable, (*3)
Provides a trait to allow rating of multiple models within your app for Laravel 5., (*4)
Ratings could be fivestar style, or simple +1/-1 style., (*5)
Installation
Edit your project's composer.json file to require willvincent/laravel-rateable., (*6)
"require": {
"willvincent/laravel-rateable": "~1.0"
}
Next, update Composer from the terminal., (*7)
composer update
As with most Laravel packages you'll need to register Rateable service provider. In your config/app.php add 'willvincent\Rateable\RateableServiceProvider' to the end of the $providers array., (*8)
'providers' => [
Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
Illuminate\Auth\AuthServiceProvider::class,
...
willvincent\Rateable\RateableServiceProvider::class,
],
Getting started
After the package is correctly installed, you need to generate the migration., (*9)
php artisan rateable:migration
It will generate the <timestamp>_create_ratings_table.php migration. You may now run it with the artisan migrate command:, (*10)
php artisan migrate
After the migration, one new table will be present, ratings., (*11)
Usage
You need to set on your model that it is rateable., (*12)
<?php namespace App;
use willvincent\Rateable\Rateable;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use Rateable;
}
Now, your model has access to a few additional methods., (*13)
First, to add a rating to your model:, (*14)
$post = Post::first();
$rating = new willvincent\Rateable\Rating;
$rating->rating = 5;
$rating->user_id = \Auth::id();
$post->ratings()->save($rating);
dd(Post::first()->ratings);
Once a model has some ratings, you can fetch the average rating:, (*15)
$post = Post::first();
dd($post->averageRating);
// $post->averageRating() also works for this.
Also, you can fetch the rating percentage. This is also how you enforce a maximum rating value., (*16)
$post = Post::find();
dd($post->ratingPercent(10)); // Ten star rating system
// Note: The value passed in is treated as the maximum allowed value.
// This defaults to 5 so it can be called without passing a value as well.
// $post->ratingPercent(5) -- Five star rating system totally equivilent to:
// $post->ratingPercent()