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

Členenie (partition)

Členenie zoskupí riadky podľa stĺpca a agreguje každú skupinu — dáta pre koláčový alebo stĺpcový graf. Skupiny sú zoradené od najväčšej:

use App\Models\User;
use RoundlyConsulting\Metrics\Facades\Metrics;

Metrics::partition()->count(User::query(), 'plan')->toArray();
// result => ['partitions' => ['pro' => 120.0, 'free' => 80.0, ...]]   // largest first

sum(), average(), max() a min() prijímajú rovnaké argumenty — zoskupte podľa jedného stĺpca a agregujte iný:

// Revenue per country this month
Metrics::partition()->sum(Order::query(), 'country', 'total')->range('MTD')->toArray();

Top N a skupina „Other“

Členenie obmedzte na najväčšie skupiny a zvyšok zlúčte do jednej, aby graf zostal čitateľný:

Metrics::partition()
    ->count(User::query(), 'country')
    ->limit(5)                       // 5 groups + "Other"
    ->otherLabel('Elsewhere')        // optional; defaults to the translatable "Other"
    ->toArray();
// result => ['partitions' => ['DE' => 120.0, ..., 'Elsewhere' => 35.0]]

Zvyšková skupina vznikne zlúčením zvyšku vlastnou agregáciou metriky: pri count() a sum() súčtom, pri max() najväčšou hodnotou, pri min() najmenšou a pri average() priemerom všetkých zostávajúcich riadkov (nie priemerom priemerov skupín). Skutočná skupina, ktorej kľúč sa zhoduje s popisom zvyškovej skupiny, nikdy nepatrí medzi top N — pridá sa do zvyšku, takže sa žiadna skupina neprepíše.

Predvolený popis pochádza z metrics.partition.other_label („Other“) a prechádza prekladačom Laravelu; otherLabel() ho prepíše pre konkrétnu metriku.

Skupina NULL

// Without a value column, count() counts rows — the NULL group is keyed ''
Metrics::partition()->count(User::query(), 'plan')->toArray();
// result => ['partitions' => ['pro' => 120.0, 'free' => 80.0, '' => 12.0]]

Vlastné popisy

Surové kľúče skupín — kód krajiny, id cudzieho kľúča — namapujte na zobrazované popisy cez labelUsing(). Surové kľúče zostanú v partitions a popisy sa objavia pod ďalším kľúčom labels. Popisy sa vyhodnocujú pri každom čítaní a nikdy sa necachujú; skupina „Other“ si ponechá vlastný popis a resolveru sa nikdy neodovzdá:

Metrics::partition()
    ->count(User::query(), 'country_id')
    ->labelUsing(fn (int|string $key): string => Country::name($key))
    ->toArray();
// result => ['partitions' => ['1' => 40.0, ...], 'labels' => ['1' => 'Germany', ...]]

Čítanie výsledku

  • partitions() — kľúč skupiny → hodnota.
  • keys() — surové kľúče skupín bez ohľadu na resolver popisov.
  • labels() — popisy z resolvera, ak je nastavený, inak surové kľúče.
  • values() — hodnoty v poradí.

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.