---
title: "Trait HasAddresses — Addresses for Laravel | Roundly"
description: "Pridajte HasAddresses akémukoľvek Eloquent modelu a získate polymorfný vzťah addresses a pomocníkov na vytváranie, čítanie a primárne adresy."
url: https://roundly-consulting.com/sk/open-source/navody/addresses-for-laravel/trait-has-addresses
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)

# Trait HasAddresses

Trait pridajte každému Eloquent modelu, ktorý vlastní adresy — zákazníkom, firmám, objednávkam, prevádzkam. Implementácia kontraktu Addressable je voliteľná, ale umožní ostatnému kódu typovať rozhranie namiesto konkrétneho modelu:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Addresses\Contracts\Addressable;
use RoundlyConsulting\Addresses\Traits\HasAddresses;

class Customer extends Model implements Addressable
{
    use HasAddresses;
}
```

## Vzťah

addresses() je vzťah MorphMany na nakonfigurovaný model adresy, takže na ňom máte k dispozícii všetky metódy Eloquent dopytov aj scopy balíka:

```php
use RoundlyConsulting\Addresses\Enums\AddressType;

$customer->addresses;                                             // Collection of Address
$customer->addresses()->count();
$customer->addresses()->primary()->ofType(AddressType::Billing)->get();
$customer->addresses()->inCountry('SK')->latest()->get();
```

## Čo trait pridáva

- addresses() — polymorfný vzťah.
- newAddress() — spustí fluentný builder naviazaný na tento model.
- addAddress(AddressData $data) a createAddress(...) — vytvorenie z DTO alebo z pomenovaných argumentov.
- getAddressOfType(), getPrimaryAddressOfType(), primaryAddress(), addressesOfType(), hasAddresses() — čítanie.
- setPrimaryAddress(Address $address) — povýši jednu z adries tohto modelu na primárnu, s kontrolou vlastníctva.
- addressBook() — AddressBook tohto modelu, ten istý objekt, ktorý vráti Addresses::for($model).

Pomocníci sú len skratkou nad fasádou: každý prechádza adresárom modelu, takže každé volanie vidia aj vaše prepísané akcie a Addresses::fake().

## Typovanie cez kontrakt

Addressable deklaruje všetky metódy traitu okrem addresses(), createAddress() a addressBook(), takže vaše funkcie môžu prijať ľubovoľného vlastníka adries:

```php
use RoundlyConsulting\Addresses\Address;
use RoundlyConsulting\Addresses\Contracts\Addressable;
use RoundlyConsulting\Addresses\Enums\AddressType;

function shippingAddressFor(Addressable $owner): ?Address
{
    return $owner->primaryAddress(AddressType::Shipping)
        ?? $owner->getAddressOfType(AddressType::Shipping);
}
```

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