---
title: "Hromadné operácie a sync — Connections for Laravel | Roundly"
description: "Prepájajte, odpájajte, udeľujte a odoberajte naraz pre viac connectables alebo zosúlaďte presnú množinu cez from()->sync()."
url: https://roundly-consulting.com/sk/open-source/navody/connections-for-laravel/hromadne-operacie
language: sk
---

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

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

# Hromadné operácie a sync

Cez toMany() pripravte viac connectables a spustite nad všetkými jedno hromadné sloveso:

```php
use RoundlyConsulting\Connections\Facades\Connections;

// Touch many targets in one call (each still emits its own event).
Connections::from($user)->toMany([$teamA, $teamB])->withPermissions('view')->connectAll();
Connections::from($user)->toMany($teams)->disconnectAll();
Connections::from($user)->toMany($teams)->grantAll('publish');
Connections::from($user)->toMany($teams)->revokeAll('publish'); // any status: pending, blocked, expired
```

- connectAll() beží v jednej transakcii na vlastnom databázovom spojení modelu prepojenia — nie na predvolenom spojení aplikácie —, takže chybná položka vráti späť aj všetky predchádzajúce, a vráti prepojenia; každá položka ide bežnou cestou vytvárania, takže eventy aj invalidácia cache fungujú správne.
- disconnectAll() beží v jednej transakcii a connectables bez prepojenia preskočí.
- grantAll() chýbajúce prepojenia vytvorí, rovnako ako grant(); bez argumentov použije pripravené oprávnenia.
- revokeAll() odoberie oprávnenia každému cieľu s prepojením v ľubovoľnom stave — vrátane pending, blocked a expirovaných, takže odobraté oprávnenie sa po accept() či extend() nevráti. Ciele bez prepojenia alebo len so soft-deleted prepojením preskočí.
- toMany() prijme akýkoľvek iterable — pole aj Eloquent kolekciu. Hromadné sloveso bez toMany() vyhodí MissingConnectable.

## Zosúladenie presnej množiny

Connections::from($user)->sync() — alebo syncConnections() z traitu — funguje ako sync() v Eloquente: prepojí chýbajúce, odpojí nadbytočné a aktualizuje prienik, všetko v jednej transakcii — pri chybe sa vráti celé zosúladenie. Pravidlá stavov platia rovnako ako pri connect(). Vracia SyncResult:

```php
use RoundlyConsulting\Connections\DataTransferObjects\SyncTarget;
use RoundlyConsulting\Connections\Facades\Connections;

// Reconcile to exactly this set: connect missing, disconnect extras, update overlap.
// Safe to repeat — a target detached earlier is revived, not re-inserted.
$result = Connections::from($user)->sync([$teamA, $teamC]);   // or $user->syncConnections([...])
$result->attached;  // list of newly connected (or revived) ids
$result->detached;  // list of disconnected ids
$result->updated;   // list of ids that already existed
$result->isEmpty(); // true when nothing was attached, detached or updated

// Per-target permissions, expiry or meta through SyncTarget DTOs. On an overlap, only what the
// target states changes: a plain model (or a null field) keeps the stored value, and the
// status is never touched.
Connections::from($user)->sync([
    new SyncTarget($teamA, permissions: ['view', 'edit']),
    new SyncTarget($teamB, ['publish'], now()->addDays(30)),
]);
```

Cieľom je samotný connectable alebo DTO SyncTarget — cez SyncTarget dáte jednému cieľu vlastné oprávnenia, expiráciu či meta:

```php
use RoundlyConsulting\Connections\DataTransferObjects\SyncTarget;

new SyncTarget(
    model: $teamB,                       // required — a Connectable
    permissions: ['publish'],            // optional
    expiresAt: now()->addDays(30),       // optional CarbonInterface
    meta: ['source' => 'directory'],     // optional
);
```

## Čo treba vedieť o sync

- Sync zosúlaďuje všetky prepojenia, ktoré connector vytvoril, naprieč všetkými typmi connectable — prepojenia na modely, ktoré v zozname chýbajú, sa odpoja bez ohľadu na ich triedu. Odovzdajte kompletnú želanú množinu.
- Pri prieniku sa zmení len to, čo cieľ uvádza: samotný model — alebo pole SyncTarget ponechané na null — zachová uložené oprávnenia, expiráciu aj meta a stav sa nikdy nemení.
- Odpojené prepojenia sa soft-deletujú a spustia ConnectionRemoved. Ak jedno neskôr znova zosynchronizujete, oživí sa ako nové prepojenie a objaví sa v attached, takže sync môžete bezpečne opakovať.
- Prázdny zoznam odpojí všetko, čo connector vytvoril.
- Model uvedený dvakrát sa zapíše raz, s posledným cieľom.

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