Zmena reakcie
react() drží jednu aktívnu reakciu na aktéra a cieľový model: reakcia s novým typom prepne existujúcu reakciu namiesto pridania druhej.
Likes::actor($user)->as('love')->react($post); // facade
$user->react($post, 'love'); // trait
$user->switchReaction($post, 'wow'); // readable alias- Žiadna predchádzajúca reakcia — správa sa ako like() a spustí Liked.
- Rovnaký typ — nič sa nezmení, vráti true, žiadna udalosť.
- Iný typ — prepne reakciu a spustí len ReactionChanged(from, to), nikdy Liked ani Unliked, takže analytika aj notifikácie vidia čistý prechod. Záznam sa zmení na mieste, alebo — ak aktér nový typ už predtým použil — sa obnoví odobratý záznam tohto typu a starý sa odoberie.
- Len odobraté reakcie — obnoví sa záznam požadovaného typu (alebo najnovší odobratý záznam prepnutý na požadovaný typ) a spustí sa Liked.
Krok za krokom
$user->react($post, 'like'); // no prior reaction: creates it, fires Liked
$user->react($post, 'like'); // same type: no-op, returns true, no event
$user->react($post, 'love'); // switches the reaction, fires ReactionChanged('like', 'love')
$user->unlike($post, 'love'); // removes it, fires UnlikedAk chcete, aby mal aktér viac súčasných reakcií, naďalej používajte like('love') + like('wow'); pre bežný prípad jednej reakcie použite react(). Ak má aktér viac reakcií, react() ich zlúči do jednej: požadovaný typ zostane (alebo sa naň prepne najnovšia reakcia a spustí ReactionChanged) a každá ďalšia aktívna reakcia sa odoberie so spustením Unliked. Záznamy sa čítajú aj prepisujú pod zámkom riadkov v jednej transakcii a udalosti sa spustia až po jej potvrdení, takže dve súbežné volania react() nikdy nenahlásia tú istú zmenu.
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.