Modely s kreditmi
Implementujte na ľubovoľnom Eloquent modeli rozhranie Creditable a použite trait HasCredits. Trait poskytuje všetky metódy, ktoré rozhranie deklaruje:
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Credits\Interfaces\Creditable;
use RoundlyConsulting\Credits\Traits\HasCredits;
final class User extends Model implements Creditable
{
use HasCredits;
}Rozhranie nevynechávajte. Každé API prijíma vlastníka ako Model&Creditable, takže model, ktorý používa len trait, zlyhá na TypeError hneď pri prvom volaní (statická analýza to odhalí ešte skôr) a credits:modify každú entitu bez Creditable preskočí.
Akýkoľvek model, nielen používatelia
Kredity sa pripájajú polymorfne, takže tímy, organizácie, projekty či zariadenia môžu mať v tej istej tabuľke každý vlastný zostatok:
final class Team extends Model implements Creditable
{
use HasCredits;
}
Credits::for($team)->add(5000, 'prepaid API calls');
Credits::for($team)->balance(); // 5000
$team->creditsBalance(); // 5000 — the same read through the traitČo trait pridáva
| Metóda | Vracia | Účel |
|---|---|---|
credits() | MorphMany | Všetky záznamy knihy pohybov, ktoré entita vlastní. |
modifyCredits($amount, $description, $meta, $allowOverdraft, $bucket) | Credit | Pridá pripísanie (kladné) alebo odpis (záporné). |
setCreditsTo($amount, $description, $meta, $allowOverdraft, $bucket) | ?Credit | Zaznamená rozdiel k presnému zostatku; null, ak sa nič nemení. |
creditsBalance($at, $bucket) | int | Zostatok jednej skupiny, voliteľne k danému okamihu. |
hasCredits($amount = 1, $at, $bucket) | bool | Zostatok je aspoň $amount. |
creditsBalanceForBuckets($buckets, $at) | int | Súčet uvedených skupín. |
totalCreditsBalance($at) | int | Súčet všetkých skupín. |
displayCredits($amount, $scale, $rounding) | string | Ľubovoľné celé číslo ako desatinný reťazec bez lokalizácie. |
displayCreditsBalance($bucket, $scale, $rounding, $at) | string | Zostatok skupiny ako desatinný reťazec bez lokalizácie. |
creditsCurrency($bucket) | ?Currency | Mena skupiny z money, alebo null pre bežné kredity. |
creditsBalanceMoney($bucket, $at) | Money | Zostatok skupiny v mene ako Money. |
modifyCreditsMoney($amount, $description, $meta, $allowOverdraft, $bucket) | Credit | Pripíše alebo odpíše Money v mene skupiny. |
formatCreditsBalance($bucket, $locale) | string | Zostatok skupiny v mene cez lokalizovaný formátovač money. |
Každé čítanie aj zápis prijíma voliteľnú skupinu; bez nej sa použije nakonfigurovaná default_bucket. Každé čítanie prijíma voliteľný okamih ($at, ľubovoľný CarbonInterface). Každá metóda je skratkou pre to isté volanie cez Credits::for($this) — pozrite Fasáda Credits.
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.