---
title: "Prepojiteľné modely — Connections for Laravel | Roundly"
description: "Pridajte trait HasConnections a kontrakt Connectable na akýkoľvek model, vygenerujte ho cez make:connectable a používajte metódy traitu."
url: https://roundly-consulting.com/sk/open-source/navody/connections-for-laravel/prepojitelne-modely
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)

# Prepojiteľné modely

Na každý model, ktorý sa má zúčastňovať na prepojeniach, pridajte trait HasConnections a implementujte kontrakt Connectable:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Connections\Concerns\HasConnections;
use RoundlyConsulting\Connections\Contracts\Connectable;

class User extends Model implements Connectable
{
    use HasConnections;
}

class Team extends Model implements Connectable
{
    use HasConnections;
}
```

Prepojenia sú smerované. Connector je strana, ktorá prepojenie vytvára; connectable je strana, na ktorú smeruje. Model môže mať obe roly — používateľ sa môže prepojiť s tímom a tím s projektom:

```php
$user->connectTo($team, ['view']);

$user->hasPermissionThroughConnection($team, 'view');  // true  — $user → $team exists
$team->hasPermissionThroughConnection($user, 'view');  // false — there is no $team → $user connection

$user->connections;  // connections $user initiated (it is the connector)
$team->connectors;   // connections pointing at $team (it is the connectable)
```

## Generovanie cez make:connectable

```bash
php artisan make:connectable Organisation        # writes app/Models/Organisation.php
php artisan make:connectable User --existing      # prints the lines to add to an existing model
```

Bez --existing príkaz vytvorí nový model — do app/Models, ak tento priečinok existuje — ktorý už používa trait a implementuje kontrakt:

```php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Connections\Concerns\HasConnections;
use RoundlyConsulting\Connections\Contracts\Connectable;

class Organisation extends Model implements Connectable
{
    use HasConnections;
}
```

## Metódy traitu

HasConnections sprístupní ten istý životný cyklus ako metódy modelu — skratky nad fasádou Connections. Každý zápis ide cez ConnectionManager, takže volania traitu zachytí aj vlastná väzba manažéra, aj Connections::fake():

```php
$user->connectTo($team, ['view', 'edit'], now()->addMonth()); // Connection
$user->disconnectFrom($team);                                  // void
$user->grantThroughConnection($team, 'publish');               // Connection
$user->revokeThroughConnection($team, 'publish');              // Connection
$user->syncConnectionPermissions($team, ['view']);             // Connection
$user->clearConnectionPermissions($team);                      // Connection
$user->permissionsThroughConnection($team);                    // Collection<int, string>
$user->syncConnections([$teamA, $teamB]);                      // SyncResult
```

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `connectTo($connectable, $permissions = null, $expiresAt = null, $meta = null)` | `Connection` | Vytvorí prepojenie, pri existujúcom zmení len to, čo zadáte. |
| `disconnectFrom($connectable)` | `void` | Soft delete; ak prepojenie neexistuje, vyhodí ConnectionNotFound. |
| `toggleConnection($connectable, $permissions = null)` | `?Connection` | Aktívne prepojenie odpojí, inak prepojí. |
| `reconnectTo($connectable)` | `Connection` | Obnoví soft-deleted prepojenie v pôvodnej podobe alebo vytvorí nové. |
| `inviteConnection($connectable)` | `Connection` | Vytvorí prepojenie v stave pending; nad prijatým či zablokovaným vyhodí InvalidStatusTransition. |
| `acceptConnectionFrom($connector)` | `Connection` | Prijímajúca strana: prijme prepojenie od $connector. |
| `blockConnectionFrom($connector)` | `Connection` | Prijímajúca strana: zablokuje prepojenie od $connector. |
| `grantThroughConnection($connectable, ...$permissions)` | `Connection` | Pridá oprávnenia; chýbajúce prepojenie vytvorí. |
| `revokeThroughConnection($connectable, ...$permissions)` | `Connection` | Odoberie oprávnenia; ak prepojenie chýba, vyhodí ConnectionNotFound. |
| `syncConnectionPermissions($connectable, $permissions)` | `Connection` | Nastaví presne túto sadu (pole alebo Collection); chýbajúce prepojenie vytvorí. |
| `clearConnectionPermissions($connectable)` | `Connection` | Vyprázdni sadu oprávnení; ak prepojenie neexistuje, vyhodí ConnectionNotFound. |
| `syncConnections($connectables)` | `SyncResult` | Zosúladí prepojenia connectora presne s touto množinou. |
| `permissionsThroughConnection($connectable)` | `Collection` | Uložená sada oprávnení bez ohľadu na stav. |

Kontroly (isConnectedTo(), hasPermissionThroughConnection() a ďalšie) opisujú sekcie Oprávnenia a Dopytovanie prepojení.

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