---
title: "Reviews for Laravel — docs | Roundly"
description: "Developer docs for Reviews for Laravel: polymorphic reviews, star ratings, moderation, review photos, helpful votes, owner responses and cached aggregates."
url: https://roundly-consulting.com/open-source/docs/reviews-for-laravel
language: en
---

[All packages](https://roundly-consulting.com/open-source.md)

Open source

# Reviews for Laravel

Install

`composer require roundly-consulting/reviews-for-laravel`

Requires: PHP ^8.4 · Laravel ^12.0|^13.0

[GitHub](https://github.com/roundly-consulting/reviews-for-laravel) [Packagist](https://packagist.org/packages/roundly-consulting/reviews-for-laravel) [Donate (opens in a new tab)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Patreon](https://www.patreon.com/cw/roundly)

## Overview

A complete reviews and ratings system for Laravel. Any Eloquent model can write a review and any model can be reviewed — customers rate products, hosts rate guests, businesses rate users. It handles star ratings, a moderation lifecycle with pluggable auto-moderation, verified flags, helpful votes, owner responses, photo galleries, live or cached aggregates, events and first-class testing helpers — all behind one Reviews facade. MIT-licensed and native: its only dependencies are Laravel and three Roundly packages — media library, enums and package toolkit — installed automatically.

### What you get

#### Anything reviews anything

Polymorphic author and subject — customers review products, hosts review guests, businesses review users.

#### Star ratings & aggregates

Configurable rating scale with live average, count, distribution and a RatingSummary DTO — or cached columns for hot pages.

#### Moderation lifecycle

Pending, approved and rejected with reasons, auto-approve, re-moderation on edit and a pluggable auto-moderator.

#### Review photos

A responsive photo gallery per review via Media Library for Laravel — public URLs or signed-only private photos.

#### Trust & engagement

Verified-purchase flags, helpful votes with most-helpful sorting, and owner responses that never touch the score.

#### Facade, DI or actions

Call the Reviews facade, inject ReviewsManager or run an action — the same code, with nine domain events, a JSON resource and macros.

#### Testing built in

A recording Reviews::fake() that still performs every operation, ten intent assertions, Pest matchers, a test-case trait and factories.

### Documentation

#### [Installation](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/installation.md)

Install via Composer, publish the publish-only migrations for reviews and media, and optionally the config, translations and resources.

#### [Configuration](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/configuration.md)

Every config key and its default — models, key type, rating scale, moderation, aggregates, API resources and review photos.

#### [Database schema & key types](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/database-schema.md)

The reviews and review\_votes tables, their columns and indexes, and how key\_type supports UUID and ULID models.

#### [Preparing your models](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/preparing-models.md)

Add HasReviews to subjects, CanReview to authors and CanVoteOnReviews to voters — any model can play any role.

#### [The Reviews facade](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/facade.md)

Every reviews operation on one facade — for($subject) handles, the swap-aware query(), and flat verbs for moderation, votes and verification.

#### [DI and actions](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/without-facade.md)

Inject ReviewsManager instead of the facade, or run the action behind each verb — CreateReview, ApproveReview, VoteOnReview and more.

#### [Creating reviews](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/creating-reviews.md)

Create reviews with the fluent facade — ratings, text, metadata, force-approve, verified flags — and know what gets validated.

#### [Review photos](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/review-photos.md)

Attach photo galleries to reviews from uploads, drafts, disks or URLs, and render responsive images via Media Library.

#### [Private photos & storage](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/private-photos.md)

Keep review photos off public storage — private disks, short-lived signed URLs and signed srcset for every reader.

#### [Moderation lifecycle](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/moderation.md)

Pending, approved and rejected statuses — approve and reject with reasons, build a moderation queue, use the status enum.

#### [Auto-moderation](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/auto-moderation.md)

Screen new and edited reviews with the built-in banned-word moderator or your own ReviewModerator — approve, reject or leave pending.

#### [Updating & deleting](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/updating-deleting.md)

Edit reviews with UpdateReviewData, re-moderate on edit, soft-delete, restore and force-delete.

#### [Ratings & aggregates](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/ratings-aggregates.md)

Average rating, counts, star distribution and a RatingSummary DTO — live, approved-only aggregates on any subject.

#### [Cached aggregates](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/cached-aggregates.md)

Store reviews\_count and reviews\_avg on the subject’s table, keep them in sync automatically, rebuild with reviews:recount.

#### [Querying reviews](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/querying.md)

Query scopes for status, rating, author, subject, verification, responses and helpfulness, plus authoring lookups.

#### [Verified reviews](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/verified-reviews.md)

Flag verified purchases or reviewers on create, with Reviews::verify() or in an update, and filter verified and unverified reviews.

#### [Helpful votes](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/helpful-votes.md)

Let any model vote reviews helpful or unhelpful — one vote per voter, flip on re-vote, denormalized tallies and sorting.

#### [Owner responses](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/owner-responses.md)

Reply publicly to a review — responses are threaded, approved immediately and never count toward ratings.

#### [Events](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/events.md)

Nine events — created, approved, rejected, updated, deleted, responded, voted, vote-removed and verified — react without touching the package.

#### [JSON resource](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/json-resource.md)

ReviewResource and ReviewCollection expose a sensible public API shape — swap the author and subject resources, or publish them to customise the fields.

#### [Custom models & macros](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/extending.md)

Swap in your own Review or ReviewVote model, register custom facade verbs as macros, and control the facade alias.

#### [Testing](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/testing.md)

Reviews::fake() records every mutation from any path while still performing it — ten assertions, Pest matchers, a test-case trait and factories.

#### [Requirements](https://roundly-consulting.com/open-source/docs/reviews-for-laravel/requirements.md)

PHP 8.4+, Laravel 12 or 13, plus Roundly’s media library, enums and package toolkit — installed automatically.

## Show your open-source love

This package is free and MIT-licensed. If it saves you time, a one-off donation or a Patreon membership keeps it maintained, tested and documented.

[More ways to support, including crypto](https://roundly-consulting.com/support-us.md)

By donating, you agree to our [donation terms](https://roundly-consulting.com/donation-terms.md).

[Support our open source work (opens in a new tab)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Join us on Patreon (opens in a new tab)](https://www.patreon.com/cw/roundly)

## Want this built into your product?

We integrate our packages into custom Laravel and AI builds. Tell us what you're working on and we'll reply within 48 hours.

[Get a quote in 48 hours](https://roundly-consulting.com/contact.md) [Browse all packages](https://roundly-consulting.com/open-source.md)
