---
title: "Dávanie, odoberanie a prepínanie páčikov — Likes for Laravel | Roundly"
description: "Idempotentné like, unlike a toggle cez fasádu Likes alebo trait modelu, ktoré vracajú aktuálny stav, plus hromadné likeMany()."
url: https://roundly-consulting.com/sk/open-source/navody/likes-for-laravel/davanie-pacikov
language: sk
---

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

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

# Dávanie, odoberanie a prepínanie páčikov

Všetky tri operácie sú idempotentné a vracajú boolean s významom „páči sa teraz“ — like() vráti true, unlike() vráti false a toggle() vráti výsledný stav. Fasáda koná za prihláseného používateľa, pokiaľ neurčíte iného aktéra:

```php
use RoundlyConsulting\Likes\Facades\Likes;

Likes::like($post);                 // true  — ensure liked (no-op if already liked)
Likes::unlike($post);               // false — ensure not liked (no-op if not liked)
Likes::toggle($post);               // true on like, false on unlike

Likes::actor($user)->like($post);   // as any actor instead of the signed-in user
```

## Skratka cez trait

GivesLikes ponúka tie isté operácie priamo na aktérovi — $user->like($post) je to isté ako Likes::actor($user)->like($post):

```php
$post = Post::find(1);
$user = auth()->user();

$user->like($post);        // true  — ensure liked (no-op if already liked)
$user->unlike($post);      // false — ensure not liked (no-op if not liked)
$user->toggleLike($post);  // true on like, false on unlike
```

Opätovný páčik obnoví predtým odobratý záznam namiesto vytvorenia duplicitného riadku, takže každý aktér má jediný záznam na cieľový model a typ reakcie. Vynucuje to unikátny index tabuľky, takže to platí aj pri súbežných požiadavkách: dvojklik, druhá karta ani zopakovaná požiadavka nikdy nevytvoria druhý riadok a Liked / Unliked spustí len požiadavka, ktorá naozaj niečo zmenila. Idempotentné volania bez zmeny nič nezapíšu ani nespustia žiadne udalosti, takže dvojklik na tlačidlo nenafúkne počty ani notifikácie.

## Typy reakcií

Typ reakcie zvolíte cez as() — alebo ho odovzdáte ako druhý argument operácie traitu. Bez neho sa použije default\_reaction (pozri Typované reakcie):

```php
Likes::as('love')->like($post);
Likes::actor($user)->as('love')->toggle($post);

$user->like($post, 'love');          // the trait takes the type as a second argument
$user->unlike($post, 'love');
```

## V controlleri

Keďže toggle() vracia nový stav, tlačidlo so srdiečkom vystačí s jedným volaním:

```php
use Illuminate\Http\Request;
use RoundlyConsulting\Likes\Facades\Likes;

final class TogglePostLike
{
    public function __invoke(Request $request, Post $post): array
    {
        $liked = Likes::actor($request->user())->toggle($post);

        return ['liked' => $liked, 'count' => Likes::for($post)->count()];
    }
}
```

## Hromadné operácie

Pridajte alebo odoberte páčiky mnohým modelom naraz — praktické pri importoch a funkcii „označiť všetko ako obľúbené“:

```php
Likes::likeMany([$post, $comment]);                    // as the resolved actor
Likes::actor($team)->as('love')->unlikeMany([$post]);

$user->likeMany([$post, $comment, $photo]);            // the trait shorthand
$user->unlikeMany([$post, $comment]);
$user->likeMany(Post::whereKey($ids)->get(), 'love');  // any iterable of models, optional type
```

Hromadné volania nič nevracajú. Pre každú položku spustia rovnakú idempotentnú operáciu like alebo unlike, takže položky s existujúcim páčikom preskočia a každá zmenená položka spustí vlastné udalosti.

## 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/likes-for-laravel.md)
