Looking to hire Laravel developers? Try LaraJobs

laravel-ratings maintained by centrex

Description
Add rating to any model in laravel
Author
Last update
2026/05/01 19:28 (dev-main)
License
Downloads
2 134

Comments
comments powered by Disqus

Add ratings and reviews to any Eloquent model

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Polymorphic rating and review system for any Eloquent model. Each authenticated user can rate or review a model once. Provides average, sum, and percentage accessors out of the box.

Installation

composer require centrex/laravel-ratings
php artisan vendor:publish --tag="laravel-ratings-migrations"
php artisan migrate

Usage

1. Add the traits to your model

use Centrex\LaravelRatings\Concerns\InterectsWithRating;
use Centrex\LaravelRatings\Concerns\InterectsWithReview;

class Product extends Model
{
    use InterectsWithRating;
    use InterectsWithReview;
}

2. Ratings

// Rate (throws CannotBeRatedException if already rated)
$product->rate(5);

// Remove rating
$product->unrate();

// Check if current user already rated
$product->alreadyRated();  // bool

// Aggregates (computed via Eloquent accessors)
$product->average_rating;          // avg score
$product->sum_rating;              // total score
$product->rated_in_total;          // number of ratings
$product->rated_by_users;          // number of unique users who rated
$product->average_rating_by_user;  // current user's average rating
$product->average_sum_of_user;     // current user's total score

// Percentage out of max (default max from config)
$product->ratingPercent();          // out of config max
$product->ratingPercent(10);        // out of 10

3. Reviews

// Review (throws CannotBeReviewedException if already reviewed)
$product->review('Excellent build quality, highly recommend!');

// Remove review
$product->unreview();

// Check if current user already reviewed
$product->alreadyReviewed();  // bool

// Get all reviews
$product->reviews;

// Count unique reviewers
$product->reviewed_by_users;

4. Config

php artisan vendor:publish --tag="laravel-ratings-config"
// config/rating.php
'max_rating' => 5,
'users' => [
    'primary_key' => 'user_id',
],

Testing

composer test        # full suite
composer test:unit   # pest only
composer test:types  # phpstan
composer lint        # pint

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.