---
title: "Konfigurácia — Opening Hours for Laravel | Roundly"
description: "Každý konfiguračný kľúč s predvolenou hodnotou a env premennou — časové pásma, hľadanie, limity, cache, API, čistenie a materializácia."
url: https://roundly-consulting.com/sk/open-source/navody/opening-hours-for-laravel/konfiguracia
language: sk
---

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

[Opening Hours for Laravel](https://roundly-consulting.com/sk/open-source/navody/opening-hours-for-laravel.md)

# Konfigurácia

Konfigurácia sa zlučuje, takže prepíšete len to, čo potrebujete — a väčšinu nastavení ovládate cez env. Publikovaný config/opening-hours.php:

```php
use RoundlyConsulting\OpeningHours\Models\Calendar;
use RoundlyConsulting\OpeningHours\Models\ExceptionRule;
use RoundlyConsulting\OpeningHours\Models\Schedule;

return [
    'key_type' => env('OPENING_HOURS_KEY_TYPE', 'bigint'),
    'models' => [
        'calendar' => Calendar::class,
        'schedule' => Schedule::class,
        'exception_rule' => ExceptionRule::class,
    ],
    'default_calendar' => env('OPENING_HOURS_DEFAULT_CALENDAR', 'default'),
    'timezone' => env('OPENING_HOURS_TIMEZONE'),
    'first_day_of_week' => env('OPENING_HOURS_FIRST_DAY_OF_WEEK', 'monday'),
    'search_days' => env('OPENING_HOURS_SEARCH_DAYS', 366),
    'max_query_days' => env('OPENING_HOURS_MAX_QUERY_DAYS', 366),
    'delete_with_owner' => env('OPENING_HOURS_DELETE_WITH_OWNER', true),
    'limits' => [
        'calendars' => 16, 'schedules' => 20, 'ranges_per_day' => 12, 'exceptions' => 1000,
        'label_length' => 191, 'meta_bytes' => 4096, 'busy_periods' => 10000, 'slots' => 2000,
    ],
    'cache' => [
        'enabled' => env('OPENING_HOURS_CACHE_ENABLED', true),
        'store' => env('OPENING_HOURS_CACHE_STORE'),
        'ttl' => env('OPENING_HOURS_CACHE_TTL', 86400),
        'prefix' => env('OPENING_HOURS_CACHE_PREFIX', 'opening-hours'),
    ],
    'api' => ['expose_meta' => false, 'week_mode' => 'upcoming', 'upcoming_exceptions_days' => 60],
    'prune' => [
        'exceptions_after_days' => env('OPENING_HOURS_PRUNE_EXCEPTIONS_AFTER_DAYS'),
        'trashed_after_days' => env('OPENING_HOURS_PRUNE_TRASHED_AFTER_DAYS'),
    ],
    'materialize' => [
        'enabled' => env('OPENING_HOURS_MATERIALIZE', false),
        'days_ahead' => env('OPENING_HOURS_MATERIALIZE_DAYS_AHEAD', 60),
        'days_behind' => env('OPENING_HOURS_MATERIALIZE_DAYS_BEHIND', 1),
        'connection' => env('OPENING_HOURS_QUEUE_CONNECTION'),
        'queue' => env('OPENING_HOURS_QUEUE'),
    ],
    'facade_alias' => 'OpeningHours',
];
```

## Všetky kľúče

| Kľúč | Predvolené | Env | Účel |
| --- | --- | --- | --- |
| `key_type` | bigint | `OPENING_HOURS_KEY_TYPE` | Typ primárneho kľúča vlastníka (bigint, uuid, ulid); určuje typ stĺpca owner\_id v migráciách. Iná hodnota vyhodí výnimku. |
| `models.calendar` | Calendar::class | — | Model kalendára; môžete ho nahradiť podtriedou (čokoľvek iné vyhodí výnimku). |
| `models.schedule` | Schedule::class | — | Model rozvrhu; môžete ho nahradiť podtriedou (čokoľvek iné vyhodí výnimku). |
| `models.exception_rule` | ExceptionRule::class | — | Model výnimky; môžete ho nahradiť podtriedou (čokoľvek iné vyhodí výnimku). |
| `default_calendar` | default | `OPENING_HOURS_DEFAULT_CALENDAR` | Kľúč kalendára, ak žiadny nezadáte. |
| `timezone` | null | `OPENING_HOURS_TIMEZONE` | Záložné časové pásmo pred app.timezone (len názvy IANA; nenastavená hodnota — null alebo prázdna — = app.timezone). |
| `first_day_of_week` | monday | `OPENING_HOURS_FIRST_DAY_OF_WEEK` | Poradie dní vo forWeek(), forWeekOf() a v režime kalendárneho týždňa API. |
| `search_days` | 366 | `OPENING_HOURS_SEARCH_DAYS` | Koľko miestnych dní po (alebo pred) danom dni hľadajú next\*/previous\* a nextAvailableSlot() (1–3660); ďalej vracajú null. |
| `max_query_days` | 366 | `OPENING_HOURS_MAX_QUERY_DAYS` | Najdlhšie obdobie, ktoré môže pokryť dotaz na interval (vrátane isOpenDuring() a isClosedDuring()), hľadanie slotov či kontrola dostupnosti (1–3660); sloty a kontroly doň započítajú aj dĺžku rezervácie s oboma časovými rezervami. nextAvailableSlot() a stavový zdroj sa doň zmestia samy. |
| `delete_with_owner` | true | `OPENING_HOURS_DELETE_WITH_OWNER` | Odstráni kalendáre pri trvalom zmazaní vlastníka. |
| `limits.calendars` | 16 | — | Živé pomenované kalendáre na vlastníka — kontroluje sa, keď sync kalendár vytvorí alebo obnoví soft-deleted kalendár. |
| `limits.schedules` | 20 | — | Rozvrhy na kalendár. |
| `limits.ranges_per_day` | 12 | — | Rozsahy na deň v týždni / na výnimku. |
| `limits.exceptions` | 1000 | — | Výnimky na kalendár. |
| `limits.label_length` | 191 | — | Maximálna dĺžka popisu. |
| `limits.meta_bytes` | 4096 | — | Maximálna veľkosť meta v JSON. |
| `limits.busy_periods` | 10000 | — | Obsadené obdobia načítané pri jednom vyhodnotení dostupnosti. |
| `limits.slots` | 2000 | — | Maximum slotov v jednom dotaze. |
| `cache.enabled` | true | `OPENING_HOURS_CACHE_ENABLED` | Cachovať skompilované definície. |
| `cache.store` | null | `OPENING_HOURS_CACHE_STORE` | Cache store (nenastavená hodnota — null alebo prázdna — = predvolený; nastavená hodnota musí byť reťazec). |
| `cache.ttl` | 86400 | `OPENING_HOURS_CACHE_TTL` | Sekundy; null = navždy (prázdna hodnota z env sa považuje za nenastavenú, teda 86400). |
| `cache.prefix` | opening-hours | `OPENING_HOURS_CACHE_PREFIX` | Prefix kľúčov v cache (reťazec; prázdna hodnota = nenastavená = opening-hours). |
| `api.expose_meta` | false | — | Zahrnúť meta do API zdrojov. |
| `api.week_mode` | upcoming | — | Týždeň v stavovom zdroji: upcoming (najbližších 7 dátumov) alebo calendar\_week. |
| `api.upcoming_exceptions_days` | 60 | — | Výhľad stavového zdroja (najviac max\_query\_days − 1) a štruktúrovaných dát. |
| `prune.exceptions_after_days` | null | `OPENING_HOURS_PRUNE_EXCEPTIONS_AFTER_DAYS` | Odstrániť jednorazové výnimky, ktoré skončili pred N dňami (nenastavená hodnota — null alebo prázdna — = vypnuté). |
| `prune.trashed_after_days` | null | `OPENING_HOURS_PRUNE_TRASHED_AFTER_DAYS` | Natrvalo zmazať soft-deleted riadky staršie ako N dní (nenastavená hodnota — null alebo prázdna — = vypnuté). |
| `materialize.enabled` | false | `OPENING_HOURS_MATERIALIZE` | Udržiavať tabuľku opening\_hours\_intervals pre SQL scopy. |
| `materialize.days_ahead` | 60 | `OPENING_HOURS_MATERIALIZE_DAYS_AHEAD` | Materializovaný horizont dopredu (dni); SQL scopy siahajú po teraz + days\_ahead − 1 deň. |
| `materialize.days_behind` | 1 | `OPENING_HOURS_MATERIALIZE_DAYS_BEHIND` | Materializovaný horizont dozadu (dni). |
| `materialize.connection` | null | `OPENING_HOURS_QUEUE_CONNECTION` | Queue connection materializačného jobu (nenastavená hodnota — null alebo prázdna — = predvolená; inak reťazec). |
| `materialize.queue` | null | `OPENING_HOURS_QUEUE` | Fronta materializačného jobu (nenastavená hodnota — null alebo prázdna — = predvolená; inak reťazec). |
| `facade_alias` | OpeningHours | — | Globálny alias fasády; null alebo zápis false (false, 0, off, no) ho vypne; prázdna hodnota sa považuje za nenastavenú a ponechá OpeningHours. |

Hodnoty z env prichádzajú ako reťazce a pri čítaní sa validujú: prepínače (delete\_with\_owner, cache.enabled, materialize.enabled, api.expose\_meta) prijímajú true/1/on/yes alebo false/0/off/no, číselné kľúče celé čísla vo svojom rozsahu a key\_type, first\_day\_of\_week a api.week\_mode jednu z uvedených hodnôt. Prázdna hodnota ('' či len medzery, čo dá samotný riadok OPENING\_HOURS\_SEARCH\_DAYS=) sa považuje za nenastavenú a dostane predvolenú hodnotu z tabuľky. Čokoľvek iné — preklep ako OPENING\_HOURS\_CACHE\_ENABLED=disabled či OPENING\_HOURS\_SEARCH\_DAYS=abc, cache store, prefix, fronta či connection, ktoré nie sú reťazcom, alebo časové pásmo, ktoré nie je reťazcom — vyhodí InvalidConfigurationException z toolkitu, namiesto toho, aby sa potichu použila predvolená hodnota.

null si zachováva zdokumentovaný význam: predvolený store, connection či frontu, app.timezone pri timezone, navždy pri cache.ttl, vypnuté pri prune.\* a žiadny alias pri facade\_alias. Prázdna hodnota znamená to isté ako null, okrem cache.ttl, kde ponechá 86400, a facade\_alias, kde ponechá OpeningHours.

## Prostredie (env)

Všetky kľúče ovládané cez env na jednom mieste:

```bash
OPENING_HOURS_KEY_TYPE=bigint
OPENING_HOURS_DEFAULT_CALENDAR=default
OPENING_HOURS_TIMEZONE=Europe/Bratislava
OPENING_HOURS_FIRST_DAY_OF_WEEK=monday
OPENING_HOURS_SEARCH_DAYS=366
OPENING_HOURS_MAX_QUERY_DAYS=366
OPENING_HOURS_DELETE_WITH_OWNER=true
OPENING_HOURS_CACHE_ENABLED=true
OPENING_HOURS_CACHE_STORE=redis
OPENING_HOURS_CACHE_TTL=86400
OPENING_HOURS_CACHE_PREFIX=opening-hours
OPENING_HOURS_PRUNE_EXCEPTIONS_AFTER_DAYS=30
OPENING_HOURS_PRUNE_TRASHED_AFTER_DAYS=90
OPENING_HOURS_MATERIALIZE=true
OPENING_HOURS_MATERIALIZE_DAYS_AHEAD=60
OPENING_HOURS_MATERIALIZE_DAYS_BEHIND=1
OPENING_HOURS_QUEUE_CONNECTION=redis
OPENING_HOURS_QUEUE=opening-hours
```

## php artisan about

Balík pridá do php artisan about sekciu Opening-hours: tri triedy modelov, typ kľúča, predvolený kalendár a časové pásmo, počet dní hľadania, zapnutie cache, cache store (zobrazený len ako default alebo custom), zapnutie materializácie a alias fasády. Chybné nastavenie, okrem triedy modelu, sa zobrazí ako INVALID, takže príkaz funguje aj pri nesprávnej konfigurácii.

## 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/opening-hours-for-laravel.md)
