se468/laravel-ratings

Laravel Ratings Engine

Downloads

11

Stars

1

Version

v0.0.1

Laravel Ratings Engine

Latest Stable Version Total Downloads License

Ratings engine for Laravel using polymorphic relationships.

DEMO : here

Installation

  1. composer require se468/laravel-ratings
  2. php artisan migrate to migrate the tables
  3. 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.
  4. Add CanGiveRatings trait to your model that needs to give Ratings (Usually App\User).

Example (CanGiveRatings):

<?php
namespace App;
use se468\Ratings\RatingGivable;
...

class User extends Authenticatable
{
    use CanGiveRating;

    ...
}

Example (CanReceiveRatings):

<?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.