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_countTrait 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 kryptomienOdoslaní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.