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

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

ObdobiePorovnáva sa s
7 … 365N dní pred aktuálnym oknom
TODAY, YESTERDAYPredchádzajúci deň
WTD, MTD, QTD, YTDRovnako dlhý úsek predchádzajúceho týždňa, mesiaca, štvrťroka alebo roka
THIS_WEEK … THIS_YEARCelý predchádzajúci týždeň, mesiac, štvrťrok alebo rok
LAST_WEEK … LAST_YEARObdobie pred ním
CUSTOMOkno presne rovnakej dĺžky, ktoré končí sekundu pred jeho začiatkom
ALLBez 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 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.