NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Likes for Laravel

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:

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

$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):

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:

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é“:

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

Odoslaní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.