Agregačné funkcie
V calculate() — alebo ako prvé fluent volanie inline buildera — zvoľte agregáciu nad Eloquent dotazom. $column je agregovaný stĺpec; $dateColumn je stĺpec, podľa ktorého sa filtruje obdobie, a predvolene je to kvalifikovaný created_at modelu:
// Value & Progress
count(Builder $query, ?string $column = null, ?string $dateColumn = null)
// average(), sum(), max(), min() — same signature
// Trend — $column is required
count(Builder $query, string $column, ?string $dateColumn = null)
// average(), sum(), max(), min() — same signature
// Partition
count(Builder $query, string $groupBy, ?string $valueColumn = null, ?string $dateColumn = null)
// average(), sum(), max(), min() — same signature- Value a Progress — count() má ako predvolený $column primárny kľúč modelu.
- Trend — $column je povinný: je to hodnota agregovaná v čase.
- Partition — $groupBy je stĺpec zoskupenia. Bez $valueColumn count() počíta riadky — takže skupina NULL (s kľúčom '') ukáže svoju skutočnú veľkosť — a ostatné agregácie použijú $groupBy.
- Pri období ALL sa dátum nefiltruje, takže $dateColumn sa nepoužije.
Príklady
use App\Models\Order;
use RoundlyConsulting\Metrics\Facades\Metrics;
// Average paid order value — any Eloquent constraint narrows the metric
Metrics::value()->average(Order::query()->where('status', 'paid'), 'total');
// Filter the period on a different date column than created_at
Metrics::value()->sum(Order::query(), 'total', 'paid_at')->range('MTD');
// Largest single order per day this month
Metrics::trend()->max(Order::query(), 'total')->daily()->range('MTD');
// Revenue per country — group by one column, sum another
Metrics::partition()->sum(Order::query(), 'country', 'total');Scopes a obmedzenia
Agregácie bežia nad vaším dotazom s aplikovanými globálnymi scopes, takže soft deletes aj ďalšie obmedzenia sa rešpektujú. Každé where(), ktoré pridáte do buildera, metriku zúži — nasmerujte ju na ten istý dotaz, ktorému vaša aplikácia už dôveruje.
Ak na inline builderi zavoláte toArray() ešte pred výberom agregácie, vyhodí IncompleteMetricException.
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.