NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Reviews for Laravel

Hodnotenia a agregáty

HasReviews dá každému predmetu vzťahy a priebežné agregáty. Agregáty počítajú len schválené recenzie najvyššej úrovne — čakajúce, zamietnuté recenzie ani odpovede vlastníka skóre neovplyvnia:

$restaurant->reviews;                 // MorphMany (all rows, responses included)
$restaurant->topLevelReviews;         // MorphMany (owner responses excluded)
$restaurant->approvedReviews;         // approved, top-level only
$restaurant->averageRating();         // ?float, null when none
$restaurant->reviewsCount();          // int (all top-level, any status)
$restaurant->approvedReviewsCount();  // int (approved)
$restaurant->ratingDistribution();    // [5 => 120, 4 => 80, ...]
$restaurant->ratingSummary();         // RatingSummary DTO
Na modeli (HasReviews)Na fasádePočíta
averageRating()for($x)->average()Priemer schválených recenzií najvyššej úrovne s hodnotením; null, ak žiadne nie sú.
approvedReviewsCount()for($x)->count()Schválené recenzie najvyššej úrovne (vrátane recenzií len s textom).
ratingDistribution()for($x)->distribution()Schválené recenzie s hodnotením podľa hodnoty, od najvyššej.
ratingSummary()for($x)->summary()Všetko uvedené plus počty fotografií ako RatingSummary.
reviewsCount()—Všetky recenzie najvyššej úrovne bez ohľadu na stav.
—for($x)->photoCount()Fotografie v schválených recenziách najvyššej úrovne.
—for($x)->reviewsWithPhotos()Schválené recenzie najvyššej úrovne s aspoň jednou fotografiou.

Súhrn hodnotení

ratingSummary() vráti DTO RatingSummary — všetko, čo stránka produktu potrebuje, v jednom objekte, s toArray() pre JSON odpovede:

$summary = $restaurant->ratingSummary();

$summary->average;            // 4.6 (null when there are no rated reviews)
$summary->count;              // 320
$summary->distribution;       // [5 => 210, 4 => 80, 3 => 20, 2 => 6, 1 => 4]
$summary->photoCount;         // 57
$summary->reviewsWithPhotos;  // 41

return response()->json($summary->toArray());
// ['average' => 4.6, 'count' => 320, 'distribution' => [...],
//  'photo_count' => 57, 'reviews_with_photos' => 41]
  • average ignoruje recenzie len s textom; count ich zahŕňa.
  • distribution má kľúče podľa hodnoty hodnotenia, od najvyššej, a obsahuje len hodnoty s aspoň jednou recenziou.
  • photoCount a reviewsWithPhotos sú 0, keď sú fotografie vypnuté.

Cez fasádu

Rovnaké agregáty sú dostupné pre akýkoľvek model cez Reviews::for(), s traitom aj bez neho — metódy traitu ho volajú tiež:

use RoundlyConsulting\Reviews\Facades\Reviews;

$reviews = Reviews::for($restaurant);

$reviews->average();                  // ?float, null when none
$reviews->count();                    // int (approved)
$reviews->distribution();             // [5 => 120, 4 => 80, ...]
$reviews->photoCount();               // total photos on approved reviews
$reviews->reviewsWithPhotos();        // approved reviews that carry a photo
$reviews->summary();                  // RatingSummary DTO — all of the above

Každé volanie spustí dopyt. Pri vyťažených výpisoch uložte počet a priemer priamo do tabuľky predmetu — pozrite Cachované agregáty.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.