---
title: "Synchronizácia kontaktov — Contacts for Laravel | Roundly"
description: "Zosúlaďte kontakty vlastníka jedného druhu s presným zoznamom — zhody upraví, nové vytvorí, zvyšok zmaže a zoradí podľa vstupu."
url: https://roundly-consulting.com/sk/open-source/navody/contacts-for-laravel/synchronizacia
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)

# Synchronizácia kontaktov

Contacts::for($owner)->sync() je stavaný pre formulár „správa kontaktov“: odovzdajte mu úplný zoznam pre jeden druh a sám zistí, čo pridať, upraviť a odstrániť:

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

$phones = Contacts::for($user)->sync(ContactType::Phone, [
    new ContactData(ContactType::Phone, '+421900000000', label: 'Mobile', isPrimary: true),
    new ContactData(ContactType::Phone, '+421900111222', label: 'Office'),
]);

$phones->pluck('position');   // [0, 1] — input order

// A registered custom kind syncs as itself
Contacts::for($user)->sync('whatsapp', [new ContactData(ContactType::Custom, '+421900123456')]);
```

- Existujúce kontakty, ktorých normalizovaná hodnota sa zhoduje s položkou, sa upravia na mieste — popis, kategória, meta a pozícia; isPrimary: true kontakt povýši. Položka len s adresou (prázdna hodnota so štruktúrovanou adresou) sa porovnáva podľa jednoriadkového zobrazenia svojej adresy, takže nezmenená položka si zachová id aj overenie.
- Položky bez zhody sa vytvoria cez akciu pridania (normalizácia, validácia, automatický primárny).
- Existujúce kontakty daného druhu, ktoré v zozname chýbajú, sa soft-zmažú.
- Ak je medzi zmazanými primárny kontakt a žiadna položka nežiada isPrimary, primárnym sa stane prvý synchronizovaný kontakt (auto\_primary). Vždy, keď sa primárny kontakt presunie — takto alebo cez položku s isPrimary — sa vrátená kolekcia načíta z databázy nanovo, takže nesie uložené príznaky primárneho kontaktu.
- position zodpovedá poradiu vstupu a vrátená kolekcia toto poradie zachováva.
- Každá zmena spustí vlastnú udalosť ContactAdded, ContactUpdated alebo ContactDeleted.

Druh je ContactType alebo surový reťazec druhu, takže registrovaný vlastný druh, napríklad whatsapp, sa synchronizuje pod vlastným názvom. Každá položka sa uloží pod druhom odovzdaným do sync(), bez ohľadu na typ v DTO. Synchronizácia prázdneho zoznamu odstráni všetky kontakty daného druhu.

## Z controllera

```php
public function update(Request $request): RedirectResponse
{
    $validated = $request->validate([
        'phones' => ['array'],
        'phones.*.value' => ContactType::Phone->rules(),
        'phones.*.label' => ['nullable', 'string'],
    ]);

    Contacts::for($request->user())->sync(ContactType::Phone, array_map(
        fn (array $row) => new ContactData(ContactType::Phone, $row['value'], label: $row['label'] ?? null),
        $validated['phones'] ?? [],
    ));

    return back();
}
```

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