---
title: "Udalosti — Addresses for Laravel | Roundly"
description: "AddressCreated, AddressUpdated, AddressDeleted a PrimaryAddressChanged — kedy sa ktorá odošle, prečo čakajú na commit a ako ich počúvať."
url: https://roundly-consulting.com/sk/open-source/navody/addresses-for-laravel/udalosti
language: sk
---

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

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

# Udalosti

Štyri udalosti sú v RoundlyConsulting\\Addresses\\Events. Každá nesie jednu verejnú vlastnosť $address, používa Dispatchable a SerializesModels a implementuje ShouldDispatchAfterCommit:

| Udalosť | Odošle sa, keď |
| --- | --- |
| `AddressCreated` | adresa vznikne cez balík — Addresses::for()->add(), save() v builderi, addAddress(), createAddress() alebo CreateAddressAction. |
| `AddressUpdated` | Addresses::update() — UpdateAddressAction — upraví adresu. |
| `AddressDeleted` | sa zmaže inštancia modelu Address — mäkko aj cez forceDelete(). |
| `PrimaryAddressChanged` | sa adresa stane primárnou adresou svojho typu — setPrimary() či setPrimaryAddress(), pridanie s isPrimary: true alebo ->primary(), prípadne úprava s isPrimary: true — a restore(), keď sa zmazaná primárna adresa vráti ako primárna. Odošle sa po AddressCreated / AddressUpdated, keď je povýšenie zapísané; nie, ak adresa primárna už bola. |

```php
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Addresses\Events\AddressCreated;
use RoundlyConsulting\Addresses\Events\PrimaryAddressChanged;

// e.g. in AppServiceProvider::boot()
Event::listen(function (AddressCreated $event): void {
    $address = $event->address;              // the new Address
    $owner = $event->address->addressable;   // its owner
});

Event::listen(function (PrimaryAddressChanged $event): void {
    // e.g. recalculate shipping for $event->address->addressable
});
```

Alebo použite samostatnú triedu listenera:

```php
namespace App\Listeners;

use RoundlyConsulting\Addresses\Events\AddressUpdated;

final class RecalculateTaxOnAddressChange
{
    public function handle(AddressUpdated $event): void
    {
        $owner = $event->address->addressable;
        // recalculate tax for $owner
    }
}
```

## Až po commite

Mimo transakcie sa udalosť odošle hneď po zápise. Vnútri transakcie vašej aplikácie počká na commit, v poradí, v akom zápisy prebehli, a rollback ju zahodí — listener tak nikdy nezareaguje na adresu, ktorá sa nikdy neuložila, ani na úpravu či zmazanie, ktoré sa vrátili späť:

```php
use Illuminate\Support\Facades\DB;
use RoundlyConsulting\Addresses\Facades\Addresses;

DB::transaction(function () use ($customer, $data, $order): void {
    Addresses::for($customer)->add($data);   // AddressCreated is held back…
    $order->save();
});                                          // …and dispatched here, once committed
```

Event::fake() zaznamená odoslanie okamžite, takže toto odloženie neukáže; overte ho skutočným listenerom cez Event::listen a transakciou.

## Čo udalosti neodošle

- Priame zápisy cez Eloquent — $customer->addresses()->create(\[...\]), $address->update(\[...\]) — ani factories neodošlú AddressCreated ani AddressUpdated.
- Hromadné mazanie dopytom, napríklad $customer->addresses()->delete(), neodošle AddressDeleted.
- Povýšenie alebo opätovné uloženie adresy, ktorá už primárna je, neodošle PrimaryAddressChanged — pozrite Primárne adresy.
- Obnovenie, po ktorom sa adresa vráti ako bežná, lebo miesto medzitým obsadila iná primárna, neodošle PrimaryAddressChanged a restoreQuietly() neodošle nič.

Keďže udalosti používajú SerializesModels, listenery vo fronte dostanú Address znova načítanú z databázy.

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