---
title: "Primárne kontakty a poradie — Contacts for Laravel | Roundly"
description: "Jeden primárny kontakt na vlastníka a druh — priradený automaticky, prehodený v transakcii, po odchode odovzdaný ďalšiemu — plus poradie v druhu."
url: https://roundly-consulting.com/sk/open-source/navody/contacts-for-laravel/primarne-kontakty
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)

# Primárne kontakty a poradie

Každý vlastník má vždy najviac jeden primárny kontakt pre každý druh. Pri zapnutom auto\_primary (predvolene) si druh, ktorý má kontakty, primárny aj udrží: stane sa ním prvý pridaný, a keď primárny kontakt zmažete, odstránite synchronizáciou alebo presuniete do iného druhu, povýši sa ďalší podľa poradia. Označenie iného kontaktu ako primárneho zosadí predchádzajúci v rámci databázovej transakcie:

```php
$first = $user->addEmail('jane@example.com');     // first email: primary automatically
$second = $user->addEmail('jane@work.example.com', primary: true);

$first->fresh()->is_primary;     // false — demoted in the same transaction
$second->fresh()->is_primary;    // true

$phone = $user->addPhone('+421900000000');   // each kind keeps its own primary
$phone->is_primary;                          // true

Contacts::setPrimary($first);                // promote again; fires PrimaryContactChanged

Contacts::delete($first);                    // the primary leaves its kind...
$second->fresh()->is_primary;                // true — ...and the next by position takes over
```

- Primárne kontakty sa určujú podľa vlastníka a surového druhu — email, phone aj každý registrovaný vlastný druh má svoj.
- Kontakty bez vlastníka zdieľajú medzi sebou jeden primárny kontakt na druh.
- PrimaryContactChanged sa spustí po potvrdení transakcie povýšenia, s novým primárnym kontaktom a so zosadeným (alebo null) — aj pri automatickom povýšení.
- Príznak sa zapíše dotazom nad uloženým riadkom, takže povýšený kontakt nespustí udalosti modelu Eloquent saving ani updated — počúvajte PrimaryContactChanged — a neuložené zmeny na kontakte odovzdanom do setPrimary() sa neuložia.
- Pri vypnutom auto\_primary sa za vás nič nepovyšuje.
- Obnovený primárny kontakt sa vráti ako sekundárny, ak medzitým jeho druh povýšil iný kontakt.
- Soft-zmazaný kontakt nedrží miesto primárneho: jeho povýšenie vyhodí PrimaryContactConflict.
- Pri zapnutom require\_owner\_for\_primary vyhodí povýšenie kontaktu bez vlastníka PrimaryContactConflict a druhy bez vlastníka sa automaticky nepovyšujú.

## Súbežné povýšenia

Dve súbežné povýšenia v rámci jedného vlastníka a druhu nikdy nevyhrajú obe. Každé povýšenie — setPrimary() aj každé pridanie, úprava, zmazanie a synchronizácia, ktoré povyšujú — beží v jednej transakcii, ktorá prečíta kontakt tak, ako je uložený, uzamkne skupinu jeho druhu a až potom zosadí druhý primárny kontakt. Na PostgreSQL a SQLite navyše index jedného primárneho kontaktu (pozrite Databázová schéma) odmietne primárny kontakt, ktorý zámok nezachytil, a povýšenie sa raz zopakuje voči potvrdenému víťazovi; na MySQL povýšenia zoraďuje samotný zámok.

## Poradie

Každý kontakt má v rámci svojho druhu pozíciu. Nové kontakty dostanú ďalšie voľné miesto (od 0), pokiaľ ho ContactData nenastaví explicitne; sync() priraďuje pozície podľa poradia vstupu:

```php
$user->addPhone('+421900000001');   // position 0
$user->addPhone('+421900000002');   // position 1 — next free slot within the kind

// Pin a position explicitly
$user->addContact(new ContactData(ContactType::Phone, '+421900000003', position: 0));

$user->contactsOfType(ContactType::Phone);            // ordered by position, then id
Contact::query()->forOwner($user)->ordered()->get();
```

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