---
title: "Fasáda Connections — Connections for Laravel | Roundly"
description: "Celé verejné API v jednej fasáde — buildery between() a from(), sada oprávnení permissions(), expiring(), prune(), flushCache() a fake()."
url: https://roundly-consulting.com/sk/open-source/navody/connections-for-laravel/fasada-connections
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)

# Fasáda Connections

Fasáda Connections je verejné API balíka — dostanete sa cez ňu ku každej operácii a je to odporúčaný spôsob použitia. Jej koreňom je RoundlyConsulting\\Connections\\ConnectionManager, singleton v kontajneri, a metódy traitu HasConnections delegujú na ten istý manažér (ďalšie vstupné body opisuje časť DI a akcie):

| Metóda | Vracia | Účel |
| --- | --- | --- |
| `Connections::between($connector, $connectable)` | `PendingConnection` | Plynulý builder pre jednu dvojicu. |
| `Connections::from($connector)` | `PendingConnection` | Builder, ktorému connectable doplníte neskôr (to(), toMany()), alebo zosúladenie cez sync(). |
| `Connections::expiring(int $days = 7)` | `Builder<Connection>` | Všetky živé prepojenia, ktoré vypršia v danom okne, naprieč všetkými connectormi. |
| `Connections::prune()` | `int` | Soft-delete expirovaných prepojení; vráti ich počet. |
| `Connections::flushCache()` | `void` | Vyprázdni cache oprávnení v rámci requestu. |
| `Connections::fake()` | `ConnectionFake` | Zaznamenávajúci fake pre testy — pozrite Testovanie. |

between() začne builder pre dvojicu; from() začne builder pre connector a connectable doplníte neskôr cez to():

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

// Create the connection, or update the pair's existing one, with permissions and an expiry.
Connections::between($user, $team)
    ->withPermissions('view', 'edit')
    ->expiresIn(now()->addMonth())   // CarbonInterface, CarbonInterval, or seconds
    ->connect();

// Defer the connectable until later with from()->to().
Connections::from($user)->to($team)->withPermissions('view')->connect();

// Move the expiry, or clear it with null.
Connections::between($user, $team)->extend(now()->addYear());
Connections::between($user, $team)->extend(null);

// Look the pair up.
Connections::between($user, $team)->exists();   // bool — an active connection exists
Connections::between($user, $team)->find();     // ?Connection — in any status

// Remove the connection (soft delete).
Connections::between($user, $team)->disconnect();

// Reconcile a connector to exactly this set (connect missing, disconnect extras).
Connections::from($user)->sync([$teamA, new SyncTarget($teamB, permissions: ['read'])]); // SyncResult

// Connections expiring within 14 days, across every connector.
Connections::expiring(14)->with('connector')->get();

// Remove all expired connections, returning how many were removed.
$removed = Connections::prune();

// Drop the in-request permission cache mid-request (it already resets per request / job).
Connections::flushCache();
```

Cache sa pri každom zápise automaticky invaliduje, takže kontrola po zápise zmenu zohľadní aj bez parametra force.

## Príprava prepojenia

Modifikátory len pripravia stav na builderi; nič sa nezapíše, kým nezavoláte terminálne sloveso:

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

$connection = Connections::from($user)
    ->to($team)                              // the connectable (or start with between())
    ->withPermissions('view', 'edit')        // staged permissions, de-duplicated
    ->withPermissions('publish')             // repeated calls add to the staged set
    ->expiresIn(CarbonInterval::days(30))    // CarbonInterface, CarbonInterval or seconds
    ->withMeta(['source' => 'signup'])       // merged into the meta bag
    ->connect();                             // terminal verb: returns the Connection
```

- to($connectable) — nastaví connectable, ak builder začal cez from().
- toMany($connectables) — pripraví viac connectables pre hromadné slovesá (pozrite Hromadné operácie a sync).
- withPermissions(...$permissions) — pripraví oprávnenia; ďalšie volania ich pridávajú a duplicity sa odstránia.
- expiresIn($value) — okamih CarbonInterface, CarbonInterval od teraz alebo celé číslo sekúnd od teraz.
- expiringAt(?$instant) — presný okamih expirácie alebo null bez expirácie.
- withMeta($array) / replaceMeta() — pripraví metadáta; zlúčia sa s uloženými, pokiaľ nezavoláte replaceMeta().
- asPending() — vytvorí prepojenie v stave pending; invite() je skratka pre asPending()->connect().

## Terminálne slovesá

| Sloveso | Vracia | Čo robí |
| --- | --- | --- |
| `connect()` | `Connection` | Vytvorí dvojicu, pri existujúcom prepojení zmení len pripravené; oživí soft-deleted dvojicu. |
| `invite()` | `Connection` | connect() v stave pending; nad prijatým či zablokovaným prepojením vyhodí InvalidStatusTransition. |
| `accept() / block()` | `Connection` | Zmení stav; ak prepojenie neexistuje, vyhodí ConnectionNotFound. Blokovanie zruší jedine accept(). |
| `disconnect()` | `void` | Soft delete; ak prepojenie neexistuje, vyhodí ConnectionNotFound. |
| `toggle()` | `?Connection` | Aktívne prepojenie odpojí (vráti null), inak prepojí — blokovanie nezruší a expiráciu neobnoví. |
| `reconnect() / restore()` | `Connection` | Obnoví soft-deleted prepojenie s jeho oprávneniami, expiráciou a meta, alebo vytvorí nové. |
| `permissions()` | `ConnectionPermissions` | Sada oprávnení dvojice: grant, revoke, sync, clear, all, has, hasAny, hasAll — pozrite Oprávnenia. |
| `extend(?$expiresAt)` | `Connection` | Posunie alebo zruší expiráciu; vyhodí ConnectionNotFound. |
| `exists()` | `bool` | Či je dvojica prepojená (pri zapnutom enforce\_active\_on\_check len aktívne). |
| `find()` | `?Connection` | Prepojenie dvojice v ľubovoľnom stave, alebo null, ak neexistuje (či je soft-deleted). |
| `sync($connectables)` | `SyncResult` | Zosúladí connector presne s touto množinou položiek Connectable alebo SyncTarget — pozrite Hromadné operácie a sync. |
| `connectAll() / grantAll() / revokeAll()` | `Collection` | Hromadné slovesá nad cieľmi z toMany(). |
| `disconnectAll()` | `void` | Hromadné odpojenie cieľov z toMany(). |

## Sada oprávnení permissions()

between()->permissions() je sada oprávnení jedného prepojenia — grant(), revoke(), sync() a clear() ju menia; all(), has(), hasAny() a hasAll() ju čítajú (pozrite Oprávnenia):

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

$permissions = Connections::between($user, $team)->permissions();

$permissions->grant('publish');          // Connection — creates the connection if absent
$permissions->revoke('publish');         // Connection — throws ConnectionNotFound if absent
$permissions->sync('view', 'edit');      // Connection — exact set, creates if absent
$permissions->clear();                   // Connection — remove every permission; throws ConnectionNotFound if absent

$permissions->all();                     // Collection<int, string> — what is stored
$permissions->has('edit');               // bool
$permissions->hasAny('view', 'edit');    // bool
$permissions->hasAll('view', 'edit');    // bool
```

## Opätovné prepojenie je bezpečné

Dvojica má najviac jeden riadok prepojenia a connect() nad dvojicou, ktorá ho už má, zmení len to, čo pripravíte: stav, oprávnenia, expirácia aj meta zostanú, pokiaľ ich znova nezadáte (meta sa zlučuje — pozrite Metadáta). Predvolené hodnoty z konfigurácie — default\_permissions, default\_status a expiry.default — platia len pre nové prepojenia. Expiráciu zrušíte cez extend(null); ak chcete zmeniť jediný atribút, použite jeho vlastné sloveso:

```php
Connections::between($user, $team)
    ->withPermissions('view', 'edit')
    ->expiresIn(now()->addMonth())
    ->connect();

// Re-connecting only changes what you stage: status, permissions and expiry are kept.
Connections::between($user, $team)->withMeta(['note' => 'hi'])->connect();   // merge; perms + expiry kept

// Config defaults (default_permissions, default_status, expiry.default) apply to new
// connections only. To clear an expiry or change one attribute, use its dedicated verb:
Connections::between($user, $team)->extend(null);
Connections::between($user, $team)->permissions()->grant('publish');
Connections::between($user, $team)->accept();
```

Po disconnect() alebo upratovaní connect() — a tiež grant(), permissions()->sync(), invite(), toggle() a sync() — oživí dvojicu ako nové prepojenie; výnimkou je zablokovaná dvojica, ktorá zostane zablokovaná (pozrite Pozvánky a stavy).

Terminálne slovesá potrebujú connectable. Ak jedno zavoláte po from() bez to() — alebo hromadné sloveso bez toMany() — vyhodí sa MissingConnectable:

```php
Connections::from($user)->connect();       // throws MissingConnectable — call to() first
Connections::from($user)->connectAll();    // throws MissingConnectable — call toMany() first
```

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