---
title: "Dotazovanie — Lifecycle for Laravel | Roundly"
description: "Query scopes pre stav, expiráciu, ochrannú lehotu, zmrazenie a čas v stave — plus eager loading cez withLifecycle() proti N+1 dotazom."
url: https://roundly-consulting.com/sk/open-source/navody/lifecycle-for-laravel/dotazovanie
language: sk
---

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

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

# Dotazovanie

HasLifecycle pridáva query scopes pre stĺpec stavu aj pre záznamy a plány balíka:

```php
Listing::query()->whereState(ListingStatus::Active)->get();
Listing::query()->whereState([ListingStatus::Active, ListingStatus::Closed])->get();
Listing::query()->whereNotState(ListingStatus::Archived)->get();
Listing::query()->whereExpiringWithin('3 days')->get();       // expires after now, within 3 days
Listing::query()->whereExpired()->get();                       // expiry passed (in grace or not yet swept)
Listing::query()->whereNotExpired()->get();
Listing::query()->whereInGrace()->get();
Listing::query()->whereFrozen()->get();
Listing::query()->whereInStateFor('14 days')->get();           // entered the current state at least 14 days ago
Listing::query()->withLifecycle()->paginate();                 // eager-load records, open schedules and latest history rows

Order::query()->whereState(PaymentStatus::Captured, 'payment_status')->get();
```

| Scope | Vyberie |
| --- | --- |
| `whereState($states, ?$lifecycle)` | Riadky v jednom zo stavov (stav alebo pole). |
| `whereNotState($states)` | Doplnok. |
| `whereExpired()` | Expirácia uplynula (v ochrannej lehote alebo ešte nespracovaná sweepom). |
| `whereNotExpired()` | Bez uplynutej čakajúcej expirácie. |
| `whereExpiringWithin('3 days')` | Vyprší po teraz, v rámci intervalu. |
| `whereInGrace()` | Vypršané, ale expiračný prechod ešte nie je na rade. |
| `whereFrozen()` | Práve zmrazené. |
| `whereInStateFor('14 days')` | Do aktuálneho stavu vstúpili aspoň pred týmto časom. |
| `withLifecycle()` | Eager-loadne záznamy stavu, otvorené plány a najnovšie riadky histórie. |

Stavy sa overujú voči definícii; nedeklarovaný stav vyhodí UnknownStateException. Každý scope prijíma voliteľný názov cyklu (predvolene prvý cyklus modelu). whereState() a whereNotState() filtrujú vlastný stĺpec modelu, ktorý je zdrojom pravdy; scopes pre expiráciu, zmrazenie a čas v stave sú poddotazy EXISTS nad tabuľkami balíka a kombinujú sa s vašimi ďalšími scopes aj so SoftDeletes.

## Ako sa vyhnúť N+1

Čítania z handlu (enteredAt(), version(), isFrozen(), expiresAt(), scheduled(), lastTransition(), …) použijú eager-loadnuté vzťahy, ak sú načítané, inak spravia dotaz. LifecycleResource prijme aj priamo model, takže zoznam načíta stav, zmrazenie, expiráciu a posledný prechod bez dotazu na každý model:

```php
// A list: a model stands for its primary lifecycle, with the actor from auth
return LifecycleResource::collection(Listing::query()->withLifecycle()->get());
```

allowedTransitions() aj tak spúšťa pipeline kontrol pre každý subjekt, takže guardy, Gate policies a počty kvót môžu robiť vlastné dotazy. Stĺpec cyklu indexujte spolu so stĺpcami scope kvót.

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