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

Konfigurácia

Publikovaný config/likes.php bez komentárov:

use RoundlyConsulting\Likes\Models\Like;

return [
    'model' => Like::class,
    'table' => env('LIKES_TABLE', 'likes'),
    'key_type' => env('LIKES_KEY_TYPE', 'bigint'),
    'reactions' => ['like'],
    'default_reaction' => env('LIKES_DEFAULT_REACTION', 'like'),
    'actor_resolver' => null,
    'facade_alias' => env('LIKES_FACADE_ALIAS', 'Likes'),

    'weights' => [
        // 'like' => 1,
        // 'love' => 4,
    ],
    'default_weight' => 1,

    'trending' => [
        'window' => '7 days',
        'recent_multiplier' => 3,
        'driver_expressions' => [
            // 'pgsql' => 'SUM(1 / POWER(EXTRACT(EPOCH FROM (NOW() - created_at)) / 3600 + 2, 1.8))',
        ],
    ],

    'broadcast' => [
        'enabled' => env('LIKES_BROADCAST', false),
        'channel_prefix' => 'likes',
        'channel_type' => 'private',
    ],
];

Všetky kľúče

KľúčPredvolenéEnvÚčel
modelLike::class—Eloquent model, ktorý ukladá páčiky. Musí to byť model balíka alebo jeho podtrieda; iná trieda vyhodí InvalidConfigurationException.
tablelikesLIKES_TABLETabuľka páčikov — číta ju migrácia, model aj všetky scopy. Reťazec; prázdna hodnota (LIKES_TABLE=) sa považuje za nenastavenú a použije sa predvolená.
key_typebigintLIKES_KEY_TYPETyp kľúča polymorfných stĺpcov actor a likeable — bigint, uuid alebo ulid. Ak aktéri či cieľové modely používajú kľúče UUID/ULID, nastavte ho pred migráciou; iná hodnota vyhodí InvalidConfigurationException.
reactions['like']—Povolený zoznam typov reakcií — neprázdny zoznam reťazcov. Akýkoľvek iný typ vyhodí InvalidReactionTypeException.
default_reactionlikeLIKES_DEFAULT_REACTIONReakcia použitá, keď žiadnu nezadáte. Musí byť uvedená v reactions.
actor_resolvernull—Ako fasáda zistí aktéra: null použije auth()->user(); alebo callable či invokovateľná trieda, ktorá vráti model alebo null. Hodnota, z ktorej nevznikne callable, vyhodí výnimku.
facade_aliasLikesLIKES_FACADE_ALIASGlobálny alias triedy pre fasádu Likes. null alebo false/0/off/no (LIKES_FACADE_ALIAS=false) alias nezaregistruje; prázdna hodnota sa považuje za nenastavenú, takže sa zaregistruje Likes.
weights[]—Váhy jednotlivých reakcií pre orderByLikeScore() a orderByTrending(). Prázdne = skóre je obyčajný počet. Každá váha musí byť int alebo float.
default_weight1—Váha reakcie, ktorá nie je vo weights (uplatní sa, keď weights nie je prázdne); int alebo float.
trending.window7 days—Okno nedávnej aktivity pre orderByTrending(); reťazec (pri prázdnej hodnote platí predvolená).
trending.recent_multiplier3—Koľkokrát viac vážia páčiky v okne oproti celkovej aktivite (int alebo float; iná hodnota vyhodí výnimku).
trending.driver_expressions[]—Voliteľný surový SQL agregát pre databázový driver (sqlite, mysql, pgsql, …), ktorý nahradí skóre trendov v dopytoch na spojení s týmto driverom. Každý ? sa naviaže na hranicu okna. Výraz, ktorý nie je reťazec, vyhodí výnimku; prázdny sa považuje za nenastavený, takže platí prenosné skóre.
broadcast.enabledfalseLIKES_BROADCASTVoliteľné vysielanie udalostí Liked, Unliked a ReactionChanged. Rozumie aj env reťazcom ako true/1/on a false/0/off; čokoľvek iné vyhodí InvalidConfigurationException.
broadcast.channel_prefixlikes—Prefix názvu kanála, napr. likes.posts.42; reťazec (pri prázdnej hodnote platí predvolená).
broadcast.channel_typeprivate—private, public alebo presence; čokoľvek iné vyhodí výnimku.

Kľúč, ktorý nie je nastavený — chýba, je null alebo je prázdny ako riadok LIKES_TABLE= v hostiteľskej aplikácii —, použije svoju predvolenú hodnotu (prázdny výraz pre driver: prenosné skóre). Nastavená hodnota musí sedieť: nereťazcové table, default_reaction, trending.window či broadcast.channel_prefix, zoznam reactions, ktorý je prázdny alebo obsahuje nereťazec, nečíselná váha, násobiteľ či predvolená váha, výraz pre driver, ktorý nie je reťazec, alebo preklep v broadcast.channel_type — ten sa už nečíta ako private — vyhodí InvalidConfigurationException, namiesto aby sa použila predvolená hodnota alebo sa nastavenie zahodilo.

Prostredie (env)

Kľúče citlivé na nasadenie sa čítajú z env, takže konfiguráciu publikujete len zriedka:

LIKES_TABLE=likes
LIKES_KEY_TYPE=bigint
LIKES_DEFAULT_REACTION=like
LIKES_FACADE_ALIAS=Likes
LIKES_BROADCAST=false

Pravidlá, ktoré sa oplatí poznať

  • table a key_type sa čítajú pri spustení migrácie — nastavte ich pred migrovaním.
  • default_reaction musí byť v reactions; inak každé volanie bez explicitného typu vyhodí InvalidReactionTypeException.
  • Closure v actor_resolver funguje, no Laravel nedokáže uložiť do cache konfiguráciu s closures — pri php artisan config:cache uprednostnite invokovateľnú triedu.
  • Broadcasting je vypnutý, kým broadcast.enabled nie je true; vaše listenery udalosti dostanú v každom prípade.

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.