Laravel Ratings Engine
, (*1)
Ratings engine for Laravel using polymorphic relationships., (*2)
DEMO : here, (*3)
Installation
composer require se468/laravel-ratings
-
php artisan migrate
to migrate the tables
- Add
CanReceiveRatings
trait to your model that receives Ratings (App\User
, App\Company
, App\Project
.. whatever you need to receive ratings for) and implement RatingReceivable
interface to the model.
- Add
CanGiveRatings
trait to your model that needs to give Ratings (Usually App\User
).
Example (CanGiveRatings):, (*4)
<?php
namespace App;
use se468\Ratings\RatingGivable;
...
class User extends Authenticatable
{
use CanGiveRating;
...
}
Example (CanReceiveRatings):, (*5)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use se468\Ratings\RatingReceivable;
use se468\Ratings\Traits\CanReceiveRating;
...
class Company extends Model implements RatingReceivable
{
use CanReceiveRating;
...
}
Usage
Basic Usage Example
public function rateCompany(Request $request)
{
$input = $request->all();
$company = Company::find($input["id"]);
auth()->user()->rate($company, $input["rating"], 'Some Comment');
return redirect()->back();
}
CanReceiveRatings Trait
Getting all ratings:
ratingsReceived() - morphMany to Ratings
Getting overall (average) rating:
getOverallRating()
CanGiveRatings Trait
Getting ratings given by this:
ratingsGiven() - hasMany to Ratings
Giving a rating:
rate(RatingReceivable $ratable, $ratingValue)
Rating
You can change rater
function in Rating
model if you want something other than App\User
to give ratings., (*6)