---
title: "Fasáda Likes — Likes for Laravel | Roundly"
description: "Páčiky jedným riadkom za prihláseného používateľa, builder actor()/as(), čítací handle Likes::for() a vlastné určenie aktéra."
url: https://roundly-consulting.com/sk/open-source/navody/likes-for-laravel/fasada-likes
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)

# Fasáda Likes

RoundlyConsulting\\Likes\\Facades\\Likes predvolene určí aktéra podľa prihláseného používateľa, takže bežné volanie zaberie jeden riadok. Aktéra alebo typ reakcie zmeníte fluentným builderom a jeden cieľový model čítate cez Likes::for():

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

Likes::like($post);                     // as the authenticated user
Likes::unlike($post);
Likes::toggle($post);
Likes::react($post);                    // one active reaction per actor + likeable
Likes::has($post);                      // bool
Likes::likeMany([$post, $comment]);
Likes::unlikeMany([$post, $comment]);

Likes::actor($user)->like($comment);    // as any actor
Likes::actor($team)->toggle($post);
Likes::as('love')->like($post);         // typed reaction
Likes::actor($user)->as('wow')->toggle($post);
Likes::actor($user)->as('love')->react($post);  // switch reaction in place
Likes::actor($user)->has($post);
Likes::actor($user)->likeMany([$post, $comment]);

Likes::for($post)->count();             // int — all reactions (uses an eager-loaded likes_count)
Likes::for($post)->count('love');       // int — one reaction type
Likes::for($post)->summary($viewer);    // ReactionSummary (viewer defaults to the resolved actor)
Likes::for($post)->likedBy($user);      // bool — default reaction type unless given
```

## Metódy

| Metóda | Vracia | Popis |
| --- | --- | --- |
| `actor(Model $actor)` | PendingLike | Začne reťazec pre konkrétneho aktéra. |
| `as(string $type)` | PendingLike | Začne reťazec pre konkrétny typ reakcie. |
| `like(Model $likeable)` | bool | Zabezpečí páčik; vráti true. |
| `unlike(Model $likeable)` | bool | Zabezpečí, že páčik nie je; vráti false. |
| `toggle(Model $likeable)` | bool | Prepne páčik; vráti nový stav. |
| `react(Model $likeable)` | bool | Nastaví jedinú reakciu aktéra a zmení ju na mieste. |
| `has(Model $likeable)` | bool | Či má aktér danú reakciu (predvolený typ, ak nepoužijete as()). |
| `likeMany(iterable $likeables)` | void | Hromadné pridanie páčikov. |
| `unlikeMany(iterable $likeables)` | void | Hromadné odobratie páčikov. |
| `for(Model $likeable)` | LikeableLikes | Čítací handle pre jeden cieľový model — count(), summary(), likedBy(). |
| `fake()` | LikesFake | Nahradí manažér zaznamenávajúcim testovacím fake. |

## Čítací handle for()

Likes::for($likeable) vráti handle LikeableLikes: count(?type) bez typu použije prednačítaný likes\_count, summary(?viewer) vráti ReactionSummary pre aktuálneho používateľa (predvolene vyhodnoteného aktéra) a likedBy($actor, ?type) overuje predvolený typ reakcie, ak iný neodovzdáte.

## Traity modelov sú len skratka

HasLikes aj GivesLikes volajú ten istý manažér, takže všetko uvedené — vrátane Likes::fake() — platí aj pre ne:

```php
$user->like($post);          // = Likes::actor($user)->like($post)
$post->likesCount();         // = Likes::for($post)->count()
$post->reactionSummary();    // = Likes::for($post)->summary()
```

## Nemenný builder

actor() aj as() zakaždým vrátia nový PendingLike, takže rozpracovaný reťazec si môžete bezpečne uložiť a znova použiť:

```php
$asLove = Likes::as('love');            // an immutable PendingLike — safe to keep

$asLove->like($post);
$asLove->actor($user)->toggle($photo);  // a new builder; $asLove is unchanged
Likes::actor($user)->has($post);        // checks the default reaction
```

## Určenie aktéra

Bez explicitného aktéra sa fasáda obráti na actor\_resolver: null použije auth()->user(); callable alebo invokovateľná trieda (získaná z kontajnera) musí vrátiť model alebo null; hodnota, z ktorej nevznikne callable, vyhodí InvalidConfigurationException. Nastavte ho pre iné guardy než web alebo pre aktérov, ktorí nie sú používatelia:

```php
// config/likes.php
'actor_resolver' => fn () => auth('api')->user(),
// or an invokable class-string:
'actor_resolver' => \App\Likes\CurrentActorResolver::class,
```

```php
namespace App\Likes;

use Illuminate\Database\Eloquent\Model;

final class CurrentActorResolver
{
    public function __invoke(): ?Model
    {
        return auth('api')->user();
    }
}
```

Laravel nedokáže uložiť do cache konfiguráciu s closures, preto pri php artisan config:cache uprednostnite invokovateľnú triedu.

## Keď sa aktér nenájde

```php
Likes::like($post);   // a guest request with no resolvable actor

// RoundlyConsulting\Likes\Exceptions\NoAuthenticatedActorException:
// No actor could be resolved. Authenticate a user or pass an actor
// explicitly via Likes::actor($model).
```

Čítania, ktoré sa musia vykresliť aj hosťom — withLikedState(), reactionSummary(), toLikeArray(), LikeResource a @liked — určia aktéra rovnako, no namiesto výnimky vrátia prázdny stav aktuálneho používateľa.

## Globálny alias

facade\_alias zaregistruje krátky globálny alias — predvolene Likes — takže fasáda funguje bez importu. Nastavením na null alebo false (LIKES\_FACADE\_ALIAS=false, prípadne 0/off/no) alias vynecháte; prázdna hodnota sa považuje za nenastavenú, takže sa Likes zaregistruje aj tak:

```php
\Likes::toggle($post);   // the global alias from facade_alias — no import needed
```

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