centrex / laravel-ratings
Add rating to any model in laravel
v2.0.0
2025-10-29 06:19 UTC
Requires
- php: ^8.2|^8.3|^8.4
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- livewire/livewire: ^3.0|^4.0
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.5
- orchestra/testbench: ^9.5
- pestphp/pest: ^3.4
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- rector/rector: ^1.2
- spatie/laravel-ray: ^1.26
- dev-main
- v2.0.0
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-dependabot/github_actions/dependabot/fetch-metadata-3.0.0
- dev-dependabot/github_actions/ramsey/composer-install-4
- dev-dependabot/github_actions/actions/checkout-6
- dev-dependabot/github_actions/stefanzweifel/git-auto-commit-action-7
This package is auto-updated.
Last update: 2026-04-11 08:03:57 UTC
README
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.