centrex/laravel-ratings

Add rating to any model in laravel
2,134
Install
composer require centrex/laravel-ratings
Latest Version:v2.0.0
PHP:^8.3
License:MIT
Last Updated:Aug 9, 2026
Links: GitHub  ·  Packagist
Maintainer: rochi88

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.

Related Packages

centrex/laravel-open-exchange-rates

This is my package laravel-open-exchange-rates

3,923 0
centrex/laravel-addresses

Manage address in laravel

3,705 0
centrex/laravel-cart

Shopping cart for Laravel with session, cookie, and database storage, Livewire c...

1,054 0
centrex/laravel-accounting

Manage accounts in laravel

4,479 3
centrex/laravel-settings

Manage settings in laravel

3,702 0