---
title: "Zrušenie a expirácia — Requests for Laravel | Roundly"
description: "Rušte a expirujte žiadosti na požiadanie, nastavte termíny pre jednotlivé žiadosti či globálne a expirujte ich podľa plánu."
url: https://roundly-consulting.com/sk/open-source/navody/requests-for-laravel/zrusenie-a-expiracia
language: sk
---

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

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

# Zrušenie a expirácia

```php
Requests::cancel($request);   // status = Cancelled
Requests::expire($request);   // status = Expired
```

cancel() vyvolá RequestStatusChanged a RequestCancelled; expire() vyvolá RequestStatusChanged a RequestExpired.

Obe zároveň uzavrú otvorené schvaľovacie kolo žiadosti, takže neskoré rozhodnutie ju už nevyrieši ani nevráti späť: cez Requests vyhodí RequestAlreadyResolved, priamo cez schvaľovací engine ($alice->approve($request)) výnimku enginu ClosedApprovalRequestException. Kolo sa uzavrie vlastným uzavretím enginu: schvaľovatelia, od ktorých sa ešte čaká rozhodnutie, sa uvoľnia (pre každého ApprovalCancelled a ApprovalStatusChanged), potom sa kolo uzavrie ako zrušené alebo expirované a engine to oznámi udalosťou ApprovalRequestResolved. Kolo, ktorému už uplynul vlastný termín, sa uzavrie ako expirované. Zrušená žiadosť je konečná; expirovanú možno iba znovu otvoriť — jej zrušenie vyhodí RequestAlreadyResolved.

## Termíny

Termín nastavíte pri vytvorení — pre konkrétnu žiadosť cez expiresAt() alebo globálne cez default\_ttl. default\_ttl je kladné celé číslo v minútach (funguje aj číselný reťazec z env()); nenastavená hodnota (null alebo prázdna) znamená žiadny predvolený termín a čokoľvek iné vyhodí InvalidConfigurationException:

```php
// Per request:
Requests::make()->title('Leave request')->expiresAt(now()->addDays(7))->create();

// Globally — config/requests.php, in minutes (integer):
'default_ttl' => 60 * 24 * 14,   // 14 days unless expiresAt() is given
```

Samotný termín stav nezmení. Kým žiadosť neexpirujete (príkazom requests:expire alebo cez expire()), zostáva po termíne v stave New a isExpired() vráti true — rozhodnúť o nej sa však už nedá: approve() alebo reject() ju na mieste nechá expirovať a vyhodí RequestAlreadyResolved (Rozhodovanie o žiadostiach). Schvaľovacie kolo má rovnaký termín, takže engine prestane prijímať rozhodnutia v tom istom okamihu:

```php
$request->isExpired();   // true when still New and past expires_at
```

## Expirácia z kódu

Requests::expireDue() nechá expirovať všetky otvorené žiadosti po termíne a vráti, koľko ich expirovalo práve toto volanie. Každý riadok sa pri spracovaní znova overí pod zámkom: žiadosť, o ktorej medzitým niekto rozhodol, ktorú zrušil, posunul jej termín alebo ju expirovalo súbežné čistenie, sa preskočí a nezapočíta, takže súbežné čistenia oznámia každú žiadosť iba raz:

```php
use RoundlyConsulting\Requests\Facades\Requests;

Requests::expireDue();                // int — how many requests were expired
Requests::expireDue(dryRun: true);    // int — how many are due; nothing changes
Requests::expireDue(chunk: 1000);     // rows processed per batch
```

## Expirácia podľa plánu

Príkaz requests:expire je tenký obal nad Requests::expireDue() (pozri Artisan príkazy). Naplánujte ho:

```php
// routes/console.php
use Illuminate\Support\Facades\Schedule;

Schedule::command('requests:expire')->hourly();
```

Expirujú sa iba otvorené žiadosti (New) po termíne expires\_at a spolu s nimi sa uzavrú ich schvaľovacie kolá; schválených a zamietnutých sa príkaz nedotkne. Príkaz zároveň nechá vypršať schvaľovacie rozhodnutia a kolá žiadostí, ktorých vlastný termín uplynul — len pre model žiadosti, takže ostatné schvaľovania vašej aplikácie zostanú na ich vlastnom čistení. Requests::expireDue() expiruje len žiadosti, takže pri volaní z kódu tento obmedzený krok urobte sami:

```php
use RoundlyConsulting\Approvals\Facades\Approvals;
use RoundlyConsulting\Requests\Facades\Requests;
use RoundlyConsulting\Requests\Models\Request;

Requests::expireDue();                            // expire past-due requests
Approvals::expire(subjectType: Request::class);   // lapse their decisions and rounds — requests only
```

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