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

Hlasy užitočnosti

Akýkoľvek model môže recenziu označiť za užitočnú alebo neužitočnú. Hlasujúci má na recenziu jeden hlas — opakované hlasovanie ho otočí:

use RoundlyConsulting\Reviews\Facades\Reviews;

Reviews::vote($review, $user, true);    // helpful
Reviews::vote($review, $user, false);   // flips the same voter to unhelpful
Reviews::removeVote($review, $user);    // withdraw — bool, false when there was no vote

$review->helpfulScore();                // helpful_count - unhelpful_count

Trait pre hlasujúcich

Pridajte modelu hlasujúceho CanVoteOnReviews a získate pohodlné pomocné metódy:

use RoundlyConsulting\Reviews\Concerns\CanVoteOnReviews;

class User extends Model { use CanVoteOnReviews; }

$user->voteOn($review);                 // helpful by default
$user->voteOn($review, false);          // unhelpful
$user->hasVotedOn($review);             // bool
$user->votedHelpfulOn($review);         // bool
$user->removeVoteFrom($review);         // bool, like removeVote()

Počty a hlasy

Každá zmena hlasu prepočíta helpful_count a unhelpful_count recenzie z tabuľky hlasov, takže triedenie podľa užitočnosti nepotrebuje join. Zmena aj prepočet bežia v jednej transakcii pod zámkom riadka recenzie, takže súbežné hlasy nikdy nenechajú neaktuálny počet; prepočet zapíše len tieto dva stĺpce — nezmení updated_at recenzie ani neuloží iné neuložené zmeny na odovzdanom modeli:

$review->helpful_count;       // int, denormalized
$review->unhelpful_count;     // int, denormalized
$review->votes;               // HasMany<ReviewVote>

$vote = $review->votes->first();
$vote->helpful;               // bool
$vote->voter;                 // MorphTo — the voting model
$vote->review;                // BelongsTo — the review
  • Review::query()->mostHelpful() triedi podľa čistého skóre, pri zhode od najnovších.
  • Pridanie alebo otočenie hlasu spustí ReviewVoted s hlasom; stiahnutie spustí ReviewVoteRemoved s hlasujúcim — len ak hlas existoval.
  • removeVote() je idempotentné a vráti false, ak hlas neexistoval.
  • Hlasy sa pri trvalom zmazaní recenzie odstránia kaskádovo.

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.