Porovnanie období
Metriky Value a Progress vedia vypočítať zmenu medzi obdobiami. withChangeAgainstPreviousPeriod() porovnáva s bezprostredne predchádzajúcim oknom:
use App\Models\User;
use RoundlyConsulting\Metrics\Enums\Period;
use RoundlyConsulting\Metrics\Facades\Metrics;
Metrics::value()
->count(User::query())
->range(Period::Today)
->withChangeAgainstPreviousPeriod() // vs. yesterday
->toArray();
// result => ['value' => 42.0, 'previous' => 30.0, 'change' => ['percentage' => 40.0, 'is_increase' => true]]Predchádzajúce okno
| Obdobie | Porovnáva sa s |
|---|---|
7 … 365 | N dní pred aktuálnym oknom |
TODAY, YESTERDAY | Predchádzajúci deň |
WTD, MTD, QTD, YTD | Rovnako dlhý úsek predchádzajúceho týždňa, mesiaca, štvrťroka alebo roka |
THIS_WEEK … THIS_YEAR | Celý predchádzajúci týždeň, mesiac, štvrťrok alebo rok |
LAST_WEEK … LAST_YEAR | Obdobie pred ním |
CUSTOM | Okno presne rovnakej dĺžky, ktoré končí sekundu pred jeho začiatkom |
ALL | Bez porovnania |
Obdobie ALL nemá ohraničené okno, preto sa vráti len hodnota.
Porovnanie s ľubovoľným rozsahom
compareTo() porovná s ľubovoľným obdobím — a zároveň zapne withChangeAgainstPreviousPeriod(). Porovnávacie obdobie sa vyhodnotí tak, ako je, v časovom pásme metriky:
use RoundlyConsulting\Metrics\Enums\Period;
Metrics::value()
->count(Order::query())
->range(Period::ThisMonth)
->compareTo(Period::LastYear) // vs. the whole previous calendar year
->toArray();
// The same month a year ago — an explicit custom window
Metrics::value()
->count(Order::query())
->range(Period::ThisMonth)
->compareTo(Period::Custom, '2025-09-01 00:00:00', '2025-09-30 23:59:59')
->toArray();Zmena pri progrese
Metriky Progress pridajú progres predchádzajúcej hodnoty a blok change s percentuálnou zmenou a rozdielmi v hodnote aj v percentuálnych bodoch progresu — ProgressResult je zároveň ValueResult, takže change() vráti percento:
Metrics::progress()
->sum(Order::query(), 'total')
->target(10000)
->range(Period::MonthToDate)
->withChangeAgainstPreviousPeriod()
->toArray();
// result => [
// 'value' => 8200.0, 'progress' => 82.0,
// 'previous' => 6500.0, 'previous_progress' => 65.0,
// 'target' => 10000.0, 'avoid' => false,
// 'change' => ['percentage' => 26.0, 'is_increase' => true, 'progress' => 17.0, 'value' => 1700.0],
// ]Percento zmeny si poradí aj s nulovou predchádzajúcou hodnotou: vráti 100, ak je aktuálna hodnota kladná, inak 0. change.is_increase je true, keď aktuálna hodnota prevyšuje predchádzajúcu.
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.