ghanem / rating-filament
Filament 4 & 5 components for the ghanem/rating package — star input, sortable average-rating column, infolist entry and review moderation.
Requires
- php: ^8.2
- filament/filament: ^4.0|^5.0
- ghanem/rating: ^2.1
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^2.34|^3.0
This package is auto-updated.
Last update: 2026-08-02 13:51:05 UTC
README
Laravel Rating for Filament
Filament 4 & 5 components for ghanem/rating (Packagist) — a star input field, a sortable average-rating table column, an infolist entry, and a relation manager for moderating reviews.
This package is admin-panel only. Ratings themselves — the traits, aggregates, scopes,
events and validation — live in
ghanem/rating, which is required
automatically. Read its README first if you have not set up the Ratingable and
CanRate traits yet.
Installation
composer require ghanem/rating-filament
This pulls in ghanem/rating ^2.1. If you have not already published its migration:
php artisan vendor:publish --provider="Ghanem\Rating\RatingServiceProvider"
php artisan migrate
Table column
Show a sortable average rating on a resource's table. The modifyQueryUsing
line is required — it selects the ratings_avg_rating alias the column reads,
which is what keeps the table to one query instead of one per row.
use Ghanem\RatingFilament\Tables\Columns\RatingColumn; public static function table(Table $table): Table { return $table ->modifyQueryUsing(fn (Builder $query) => $query->withAvgRating()->withCountRatings()) ->columns([ TextColumn::make('title'), RatingColumn::make()->showCount(), ]); }
Scoping to a rating type happens in the query, not on the column:
->modifyQueryUsing(fn (Builder $query) => $query->withAvgRating('food'))
Form field
use Ghanem\RatingFilament\Forms\Components\RatingInput; RatingInput::make('rating') ->stars(5) ->allowHalf() ->starColor('#f59e0b') ->required();
The star count defaults to config('rating.max'), and the field attaches
min/max validation rules from the same config so an out-of-range value
produces a field error instead of an InvalidRatingException.
allowHalf() lets the field store and render half-point values (2.5, 3.5,
...). Clicking the left half of a star selects the half value, and the star is
drawn half-filled to match.
Infolist entry
use Ghanem\RatingFilament\Infolists\Components\RatingEntry; RatingEntry::make('rating')->showValue();
Relation manager
use Ghanem\RatingFilament\Resources\RelationManagers\RatingsRelationManager; class PostRatingsRelationManager extends RatingsRelationManager {}
Then register it on the resource:
public static function getRelations(): array { return [PostRatingsRelationManager::class]; }
It lists the ratings a record has received, with edit and delete actions for moderation. There is no create action by default, because the correct author for an admin-created rating is application-specific.
Customising the markup
php artisan vendor:publish --tag=rating-filament-views
Known limitation
Ratingable::ratings() and CanRate::ratings() share a method name, so a model
cannot use both traits without resolving the collision with insteadof. This
relation manager always means ratings received.
Related packages
- ghanem/rating — the rating engine this package renders; traits, aggregates, query scopes, events and validation
- ghanem/friendship — friendships, requests and blocks for Eloquent models
- ghanem/friendship-filament — Filament admin panel for
ghanem/friendship