---
title: "Trendy — Metrics for Laravel | Roundly"
description: "Časové rady v intervaloch od minúty po rok, s dopĺňaním medzier, viacerými sériami cez groupBy() a podporou štyroch databáz."
url: https://roundly-consulting.com/sk/open-source/navody/metrics-for-laravel/trendy
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Metrics for Laravel](https://roundly-consulting.com/sk/open-source/navody/metrics-for-laravel.md)

# Trendy

Trend agreguje hodnotu v čase po intervaloch (bucketoch) zvolenej jednotky a vráti mapu trends s kľúčmi podľa intervalu:

```php
use App\Models\User;
use RoundlyConsulting\Metrics\Enums\Period;
use RoundlyConsulting\Metrics\Facades\Metrics;

Metrics::trend()
    ->count(User::query(), 'created_at')
    ->daily()
    ->range(Period::MonthToDate)
    ->toArray();
// result => ['trends' => ['2024-06-01' => 12.0, '2024-06-02' => 0.0, ...]]
```

## Jednotky

Jednotku nastavíte cez unit() — prípad enumu Unit alebo jeho reťazec — alebo pomocnou metódou. Predvolená je DAY, pokiaľ nezmeníte metrics.default\_unit; neznámy reťazec sa ignoruje a zostane aktuálna jednotka:

```php
use RoundlyConsulting\Metrics\Enums\Unit;

$metric->unit(Unit::Hour);   // or ->unit('HOUR')
$metric->perMinute();
$metric->hourly();
$metric->daily();            // the default (config: metrics.default_unit)
$metric->weekly();
$metric->monthly();
$metric->yearly();
```

| Hodnota | Prípad enumu | Pomocník | Kľúč intervalu |
| --- | --- | --- | --- |
| `MINUTE` | `Unit::Minute` | `perMinute()` | `Y-m-d H:i:00` |
| `HOUR` | `Unit::Hour` | `hourly()` | `Y-m-d H:00` |
| `DAY` | `Unit::Day` | `daily()` | `Y-m-d` |
| `WEEK` | `Unit::Week` | `weekly()` | `o-W` — ISO rok a týždeň, napr. 2022-52 |
| `MONTH` | `Unit::Month` | `monthly()` | `Y-m` |
| `YEAR` | `Unit::Year` | `yearly()` | `Y` |

## Dopĺňanie medzier

Výstup obsahuje každý interval zvoleného obdobia — prázdne intervaly sa doplnia nulou, takže grafy majú súvislú os. Os začína intervalom, ktorý obsahuje začiatok obdobia (ISO týždeň 1. januára pri týždennom YTD, mesiac začiatku pri mesačnom období 90), takže interval s aktuálnym okamihom je v nej vždy. Ak chcete len intervaly s dátami, dopĺňanie vypnite:

```php
Metrics::trend()->count(User::query(), 'created_at')->daily()->withoutGapFilling()->toArray();

$metric->withoutGapFilling();          // only buckets that have rows
$metric->withoutGapFilling(false);     // re-enable filling (the default)
```

Pri období ALL sa rozsah odvodí z prvého a posledného intervalu s dátami.

## Viac sérií

Trend rozdelíte podľa dimenzie cez groupBy(). Celkové hodnoty zostanú pod trends — je to nezoskupený trend za rovnaké obdobie, teda vlastná agregácia metriky nad všetkými riadkami (priemer všetkých riadkov, nie súčet priemerov sérií) — a nový kľúč series obsahuje sadu intervalov pre každú hodnotu dimenzie, každú doplnenú cez rovnaké obdobie, takže všetky série zdieľajú rovnaké intervaly:

```php
Metrics::trend()->count(User::query(), 'created_at')->daily()->groupBy('plan')->toArray();
// result => [
//   'trends' => ['2024-01-01' => 30.0, ...],            // the ungrouped trend
//   'series' => [
//     'pro'  => ['2024-01-01' => 20.0, ...],
//     'free' => ['2024-01-01' => 10.0, ...],
//   ],
// ]
```

Skupina NULL a skupina s prázdnym reťazcom zdieľajú kľúč série '', preto sa ich intervaly zlúčia agregáciou metriky — pri count a sum súčtom, pri max a min väčšou či menšou hodnotou, pri average váženým priemerom — namiesto toho, aby jedna prepísala druhú. Booleovská dimenzia má na každej databáze kľúče 0 / 1.

Vlastné orderBy() dotazu sa ignoruje: intervaly sa vždy vrátia v poradí podľa dátumu a zoradený dotaz (latest()) nerozbije GROUP BY na PostgreSQL ani MySQL. Dátumový stĺpec escapuje gramatika dotazu, takže funguje aj názov v camelCase či rezervované slovo (occurredAt, order).

## Podpora databáz

Zoskupovanie používa SQL výraz pre dátum špecifický pre databázu. MySQL, MariaDB, PostgreSQL a SQLite sú podporované hneď po inštalácii, takže ten istý trend beží bez zmien vo vývoji aj v produkcii. Týždenné intervaly sú na každom driveri podľa ISO-8601 — vrátane SQLite, ktoré natívny ISO týždeň nemá. Akýkoľvek iný driver vyhodí MissingTrendQueryExpressionException, kým preň nenamapujete výraz v config('metrics.trend\_drivers') (pozri Rozšírenie).

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

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

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/metrics-for-laravel.md)
