---
title: "Trait HasContacts — Contacts for Laravel | Roundly"
description: "Pridajte HasContacts na akýkoľvek model a získate jednoriadkové addEmail/addPhone, primárne kontakty, zoradené kolekcie a reláciu contacts."
url: https://roundly-consulting.com/sk/open-source/navody/contacts-for-laravel/trait-has-contacts
language: sk
---

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

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

# Trait HasContacts

Pridajte trait HasContacts na akýkoľvek Eloquent model — používateľa, firmu, objednávku. Bez zmeny schémy pre každý model:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Contacts\Concerns\HasContacts;

class User extends Model
{
    use HasContacts;
}
```

## Pridávanie kontaktov

Trait je skratka nad tým istým manažérom, ktorý používa fasáda Contacts — prechádza ním každá pomocná metóda, takže hodnoty sa normalizujú a validujú, uplatní sa automatický primárny kontakt, spustia sa udalosti a Contacts::fake() volanie zaznamená:

```php
use RoundlyConsulting\Contacts\DataTransferObjects\ContactData;
use RoundlyConsulting\Contacts\Enums\ContactType;

// Add — normalized + validated, primary guaranteed unique per kind.
$user->addEmail('A.Person@Example.COM ', label: 'Work', primary: true);
$user->addPhone('+421 900 000 000', label: 'Mobile');
$user->addUrl('example.com');
$user->addAddressContact('12 Main St');

// Any kind, from a DTO
$user->addContact(new ContactData(ContactType::Social, '@janedoe', label: 'Mastodon'));
```

- addEmail(), addPhone(), addUrl(), addAddressContact() — každá prijíma (string $value, ?string $label = null, bool $primary = false).
- addContact(ContactData $data) — ľubovoľný druh vrátane registrovaných vlastných druhov.
- addStructuredAddress(AddressData $data, ?string $label = null, bool $primary = false) — pozrite Štruktúrované adresy.
- addAddress() — zastaraný (deprecated) alias metódy addAddressContact(), v ďalšej hlavnej verzii bude odstránený.

## Spolu s HasAddresses

Zastaraná metóda addAddress() koliduje s HasAddresses::addAddress(AddressData) z addresses-for-laravel, takže model s oboma traitmi skončí pri načítaní triedy fatálnou chybou PHP, kým kolíziu nevyriešite. Ponechajte metódu balíka addresses a kontaktovú volajte jej vlastným názvom:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Addresses\Contracts\Addressable;
use RoundlyConsulting\Addresses\DataTransferObjects\AddressData;
use RoundlyConsulting\Addresses\Traits\HasAddresses;
use RoundlyConsulting\Contacts\Concerns\HasContacts;

class Company extends Model implements Addressable
{
    use HasAddresses, HasContacts {
        HasAddresses::addAddress insteadof HasContacts;
    }
}

$company->addAddress(AddressData::make(          // addresses: a structured Address
    city: 'Bratislava', street: 'Hlavna 1', postalCode: '81101', countryIso: 'SK',
));
$company->addAddressContact('12 Main St');        // contacts: an address contact
```

## Čítanie kontaktov

```php
$user->primaryEmail()?->value;                    // 'a.person@example.com'
$user->primaryPhone()?->value;                    // '+421900000000'
$user->primaryContact(ContactType::Url);          // ?Contact — enum or string kind
$user->contactsOfType('phone');                   // ordered EloquentCollection<Contact>

$user->contactBook();                             // the ContactBook — same as Contacts::for($user)

$user->contacts;                                  // Collection — every contact
$user->contacts()->primary()->verified()->get();  // scopes chain on the relation
```

- contacts() — relácia MorphMany; dajú sa na ňu reťaziť všetky scopy modelu Contact.
- contactsOfType(ContactType|string) — jeden druh, zoradený podľa position a potom id.
- primaryContact(ContactType|string) — primárny kontakt daného druhu alebo null.
- primaryEmail() / primaryPhone() — skratky pre dva najčastejšie druhy.
- contactBook() — ContactBook vlastníka, ten istý objekt, ktorý vráti Contacts::for($user).

## Model Contact

Každý Contact sprístupňuje svoj druh, hodnotu, príznaky a metadáta:

```php
$contact->type;          // ContactType::Email
$contact->kind;          // 'email' — the raw stored kind
$contact->value;         // 'a.person@example.com'
$contact->label;         // 'Work' — free-text label for this one contact
$contact->name;          // display name ('' when not set)
$contact->category;      // ?string
$contact->is_primary;    // bool
$contact->position;      // int — order within the kind
$contact->verified_at;   // ?Carbon
$contact->meta;          // Collection (JSON column)
$contact->owner;         // the owning model (MorphTo), or null

$contact->isVerified();  // bool
$contact->kindLabel();   // 'Email'
$contact->kindIcon();    // 'envelope'
```

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