---
title: "Udalosti — Likes for Laravel | Roundly"
description: "Liked, Unliked a ReactionChanged vznikajú len pri skutočnej zmene, jedna udalosť na zmenu — plus voliteľný uložený stĺpec s počtom."
url: https://roundly-consulting.com/sk/open-source/navody/likes-for-laravel/udalosti
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)

# Udalosti

Idempotentné volania bez zmeny — páčik tam, kde už je, alebo odobratie tam, kde nie je — nespustia žiadnu udalosť. Pri skutočnej zmene balík spustí práve jednu udalosť:

```php
use RoundlyConsulting\Likes\Events\Liked;

class NotifyAuthor
{
    public function handle(Liked $event): void
    {
        // $event->actor, $event->likeable, $event->type, $event->like
    }
}
```

| Udalosť | Kedy | Vlastnosti |
| --- | --- | --- |
| `Liked` | Páčik vznikne alebo sa obnoví | actor, likeable, type, like |
| `Unliked` | Páčik sa odoberie | actor, likeable, type, like |
| `ReactionChanged` | Reakcia sa zmení cez react() | actor, likeable, from, to, like |

- Zmena cez react() spustí len ReactionChanged — nikdy Liked ani Unliked. Keď react() zlúči viac reakcií do jednej, spustí navyše Unliked pre každú reakciu, ktorú odoberie.
- Súbežné požiadavky udalosť nezdvoja: spustí ju len požiadavka, ktorá záznam naozaj zmenila.
- Hromadné likeMany() / unlikeMany() spustia jednu udalosť pre každú položku, ktorá sa skutočne zmenila.

## Registrácia listenerov

```php
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Likes\Events\Liked;
use RoundlyConsulting\Likes\Events\ReactionChanged;

// e.g. in AppServiceProvider::boot()
Event::listen(Liked::class, NotifyAuthor::class);

Event::listen(function (ReactionChanged $event): void {
    // $event->from, $event->to — a clean transition, never an unlike + like
});
```

Udalosti používajú SerializesModels, takže listenery vo fronte fungujú ako zvyčajne.

## Voliteľne: uložený stĺpec s počtom

Balík nikdy nepridáva stĺpce do vašich tabuliek. Pre počty v O(1) použite withLikesCount() / loadCount('likes'), alebo si udržiavajte vlastný stĺpec s počtom cez malý listener — napríklad stĺpec likes\_count na cieľovom modeli:

```php
use RoundlyConsulting\Likes\Events\Liked;
use RoundlyConsulting\Likes\Events\Unliked;

class SyncLikesCounter
{
    public function increment(Liked $event): void
    {
        $event->likeable->increment('likes_count');
    }

    public function decrement(Unliked $event): void
    {
        $event->likeable->decrement('likes_count');
    }
}
```

```php
Event::listen(Liked::class, [SyncLikesCounter::class, 'increment']);
Event::listen(Unliked::class, [SyncLikesCounter::class, 'decrement']);
```

Zaregistrujte ho sami — balík ho automaticky neregistruje. Zmena reakcie nespustí Liked ani Unliked a react(), ktorý zlúči viac reakcií, spustí Unliked pre každú odobratú, takže počet zostane správny.

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