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.
composer require ghanem/rating-filamentThis pulls in ghanem/rating ^2.1. If you have not already published its migration:
php artisan vendor:publish --provider="Ghanem\Rating\RatingServiceProvider"
php artisan migrateShow 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'))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.
use Ghanem\RatingFilament\Infolists\Components\RatingEntry;
RatingEntry::make('rating')->showValue();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.
php artisan vendor:publish --tag=rating-filament-viewsRatingable::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.
- 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