---
title: "Striktné zápisy a drift — Lifecycle for Laravel | Roundly"
description: "Prečo priame zápisy stavu vyhadzujú výnimku, ktoré spôsoby zápisu obchádzajú engine a ako allowDirectWrites() a adopcia zosúladia drift."
url: https://roundly-consulting.com/sk/open-source/navody/lifecycle-for-laravel/striktne-zapisy
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)

# Striktné zápisy a drift

Zdrojom pravdy je atribút modelu. So zapnutým strict\_writes vyhodí uloženie zmeneného atribútu cyklu DirectStateWriteException:

| Spôsob zápisu | Zachytené | Výsledok |
| --- | --- | --- |
| `$m->status = …; $m->save(), update([...]), forceFill([...])->save(), push(), increment('x', 1, ['status' => …])` | áno | vyhodí výnimku (alebo sa prevezme v allowDirectWrites) |
| `Model::create([...]), factories ->create() / ->state([...])` | vytvorenie | prijme sa akýkoľvek deklarovaný stav; riadok histórie initial |
| `factory afterCreating / seeder changing a saved model’s state` | áno | vyhodí výnimku: obaľte do Lifecycles::allowDirectWrites() alebo seedujte s LIFECYCLE\_STRICT\_WRITES=false |
| `saveQuietly(), withoutEvents(), Model::query()->update(), relation update(), upsert(), insert(), DB::table(), raw SQL` | nie (bez udalosti modelu) | drift: prevezme sa pri ďalšej zmene alebo cez lifecycle:adopt |

```php
Lifecycles::allowDirectWrites(fn () => $listing->update(['status' => ListingStatus::Closed]));  // adopted at once

Lifecycles::for($listing)->adopt();                      // reconcile one subject now
Lifecycles::model(Listing::class)->adopt(chunk: 500);    // every row (= php artisan lifecycle:adopt)
```

Adopcia zapíše riadok histórie adopted, zruší plány starého stavu, naplánuje expiráciu nového stavu a odošle LifecycleAdopted a LifecycleTransitioned. Čas v prevzatom stave začína okamihom adopcie, pretože skutočný čas vstupu nie je známy. Uložený stav NULL (riadky z insert() alebo stĺpec pridaný do existujúcej tabuľky) sa nastaví na počiatočný stav. Riadok adopted sa nedá vrátiť, takže nič pod ním už vrátiť nejde.

S vypnutým strict\_writes sa uloženie modelu, ktoré mení stav, prevezme okamžite — riadok histórie, plány aj udalosti. Drift po sebe nechávajú len zápisy, ktoré obchádzajú udalosti modelu.

## Vývoj definície

História ukladá surové hodnoty stavov a názvy prechodov. Premenovanie prechodu urobí jeho minulé riadky nevratnými. Premenovanie alebo odstránenie stavu vyžaduje dátovú migráciu — obalenú do Lifecycles::allowDirectWrites() alebo nasledovanú php artisan lifecycle:adopt. Po každej zmene spustite php artisan lifecycle:validate.

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