---
title: "Hlasy užitočnosti — Reviews for Laravel | Roundly"
description: "Akýkoľvek model môže označiť recenziu za užitočnú či neužitočnú — jeden hlas, otočenie pri opakovaní, počty a triedenie."
url: https://roundly-consulting.com/sk/open-source/navody/reviews-for-laravel/hlasy-uzitocnosti
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Reviews for Laravel](https://roundly-consulting.com/sk/open-source/navody/reviews-for-laravel.md)

# 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čí:

```php
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:

```php
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 a počítajú zamykajúcim čítaním, takže súbežné hlasy nikdy nenechajú neaktuálny počet — ani vo vonkajšej transakcii vašej aplikácie pri predvolenej úrovni REPEATABLE READ v MySQL; prepočet zapíše len tieto dva stĺpce — nezmení updated\_at recenzie ani neuloží iné neuložené zmeny na odovzdanom modeli:

```php
$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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/reviews-for-laravel.md)
