Open source
Likes for Laravel
composer require roundly-consulting/likes-for-laravelPrehľad
Natívne páčiky a reakcie pre Laravel. Páčiky môže dávať aj dostávať akýkoľvek Eloquent model a jediná polymorfná tabuľka likes eviduje, komu sa čo páči — s idempotentnými operáciami, voliteľnými typovanými reakciami, zoradením podľa popularity a trendov, stavom feedu v jednom dopyte a udalosťami, na ktoré môže vaša aplikácia reagovať. Licencia MIT, postavené len na komponentoch Laravelu a balíku Roundly package toolkit — bez závislostí tretích strán.
Čo získate
Akýkoľvek aktér, akýkoľvek cieľ
Používatelia, tímy či akýkoľvek Eloquent model môžu dávať páčiky inému modelu — jedna polymorfná tabuľka likes eviduje, komu sa čo páči.
Idempotentné operácie
like(), unlike() a toggleLike() vracajú aktuálny stav; opakovanie nič nezmení a opätovný páčik obnoví pôvodný záznam.
Typované reakcie
Zapnite love, wow alebo vlastnú sadu cez povolený zoznam a zmeňte reakciu na mieste s jasnou udalosťou ReactionChanged.
Feedy bez N+1
withLikedState() a withLikesCount() načítajú stav aktuálneho používateľa aj počty pre celú stránku jedným dopytom.
Vážené skóre a trendy
Zoraďujte podľa váženého skóre reakcií alebo podľa trendov zvýhodňujúcich nedávnu aktivitu — prenosné SQL pre SQLite, MySQL aj PostgreSQL.
Udalosti a voliteľný broadcasting
Liked, Unliked a ReactionChanged vznikajú len pri skutočnej zmene a po zapnutí sa dajú vysielať cez Laravel Echo.
Nástroje na testovanie
Zaznamenávajúci Likes::fake(), pomocníky pre aktéra, Pest matchery a factory modelu pre vaše vlastné testy.
Dokumentácia
Inštalácia
Inštalácia cez Composer, publikovanie a spustenie migrácie likes — pre kľúče UUID či ULID alebo iný názov tabuľky najprv publikujte konfiguráciu.
Konfigurácia
Každý konfiguračný kľúč a jeho predvolená hodnota — model, tabuľka, typ kľúča, reakcie, aktér, váhy, trendy a broadcasting.
Databázová schéma a typy kľúčov
Jediná polymorfná tabuľka likes, soft deletes, typy kľúčov UUID/ULID a nahradenie modelu Like vlastným.
Modely a traity
HasLikes pre modely, ktoré dostávajú páčiky, GivesLikes pre aktérov; relácie, kontrakt Likeable a model Like.
Fasáda Likes
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.
DI a akcie
Bez fasády: injektujte LikeManager alebo zavolajte jednoúčelovú akciu s DTO LikeData — mapa metód fasády na akcie.
Dávanie, odoberanie a prepínanie páčikov
Idempotentné like, unlike a toggle cez fasádu Likes alebo trait modelu, ktoré vracajú aktuálny stav, plus hromadné likeMany().
Stav a počty
Overte cez Likes::has() a Likes::for(), či aktér dal modelu páčik, a spočítajte páčiky — naživo alebo z prednačítaného počtu.
Scopy dopytov
Zoraďte podľa počtu páčikov, filtrujte, čo sa aktérovi páčilo či nepáčilo, a načítajte likes_count — skladateľne a s typmi.
Stav vo feede bez N+1
withLikedState() pridá is_liked a liked_reaction pre aktuálneho používateľa celej stránke feedu jedným dopytom — aj pre hostí.
Vážené skóre a trendy
Zoraďte podľa váženého skóre reakcií alebo podľa trendov s dôrazom na nedávnu aktivitu — prenosné SQL pre SQLite, MySQL aj PostgreSQL.
Typované reakcie
Zmeňte obyčajné páčiky na typované reakcie — love, wow, laugh alebo vlastnú sadu — strážené povoleným zoznamom v konfigurácii.
Zmena reakcie
react() drží jednu aktívnu reakciu na aktéra a položku, mení ju na mieste a spúšťa len ReactionChanged.
Prehľad reakcií
Likes::for()->summary() vráti súčet, počty podľa typu, najčastejšiu reakciu aj reakciu aktuálneho používateľa pre lišty reakcií.
Čo sa aktérovi páčilo
likedItems() a likesOf() vracajú skutočnú reláciu MorphToMany modelov, ktoré sa aktérovi páčia — s eager loadingom aj stránkovaním.
Blade direktíva
Podmienka @liked vykreslí správny stav srdiečka pre aktuálneho alebo explicitného aktéra a typ reakcie.
Výstup pre JSON API
LikeResource a toLikeArray() vrátia počet páčikov, stav aktuálneho používateľa a rozpis podľa reakcií ako JSON.
Udalosti
Liked, Unliked a ReactionChanged vznikajú len pri skutočnej zmene, jedna udalosť na zmenu — plus voliteľný uložený stĺpec s počtom.
Broadcasting
Voliteľné vysielanie udalostí Liked, Unliked a ReactionChanged cez Laravel Echo na kanáloch likes.{morph}.{id}.
Výnimky
InvalidReactionTypeException, NoAuthenticatedActorException a ich spoločný základ LikesException.
Testovanie
Likes::fake() zaznamená každý páčik, odobratie aj reakciu a záznamy pritom naozaj zapíše — plus pomocníky pre aktéra, Pest matchery a factory.
Požiadavky
PHP 8.4+, Laravel 12 alebo 13 a Roundly package toolkit — žiadne PHP rozšírenia ani balíky tretích strán.
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 kryptomienOdoslaní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.