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

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 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.