---
title: "Databázová schéma a typy kľúčov — Permissions for Laravel | Roundly"
description: "Päť tabuliek, ich pevné stĺpce a ako key_type určuje typ model_id pre držiteľov s kľúčmi bigint, UUID alebo ULID."
url: https://roundly-consulting.com/sk/open-source/navody/permissions-for-laravel/databazova-schema
language: sk
---

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

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

# Databázová schéma a typy kľúčov

Balík používa päť tabuliek. Ich názvy pochádzajú z table\_names; názvy stĺpcov sú pevné:

| Tabuľka | Stĺpce | Kľúče |
| --- | --- | --- |
| `permissions` | id, name (unikátne), description (jsonb, nullable), timestamps | Autoinkrementálne id. |
| `roles` | id, name (unikátne), description (jsonb, nullable), timestamps | Autoinkrementálne id. |
| `permission_role` | permission\_id, role\_id | Oba cudzie kľúče sa pri zmazaní kaskádujú; primárny kľúč (permission\_id, role\_id). |
| `model_roles` | role\_id, model\_type, model\_id | role\_id sa pri zmazaní kaskáduje; index (model\_id, model\_type); primárny kľúč (role\_id, model\_id, model\_type). |
| `model_permissions` | permission\_id, model\_type, model\_id | permission\_id sa pri zmazaní kaskáduje; index (model\_id, model\_type); primárny kľúč (permission\_id, model\_id, model\_type). |

Väzby na držiteľov sú polymorfné (model\_type + model\_id), takže roly a oprávnenia môže držať akýkoľvek Eloquent model — nielen používateľ. Vlastné aliasy z morph mapy sa v pivotoch ukladajú rovnako ako kdekoľvek inde v Laraveli.

## Typ kľúča držiteľov

key\_type opisuje modely, ktoré držia roly a oprávnenia — nikdy nie vlastné tabuľky balíka, tie majú vždy autoinkrementálny kľúč. Určuje typ stĺpca model\_id v dvoch polymorfných pivotoch:

| key\_type | Stĺpec model\_id | Použite, keď vaši držitelia… |
| --- | --- | --- |
| `bigint` | unsignedBigInteger | používajú predvolené autoinkrementálne kľúče Laravelu (predvolené) |
| `uuid` | uuid | používajú HasUuids |
| `ulid` | ulid | používajú HasUlids |

Nastavte ho pred publikovaním a spustením migrácií — schéma sa vydaním zmrazí:

```bash
PERMISSIONS_KEY_TYPE=uuid
```

```php
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Permissions\Concerns\HasRoles;

class User extends Authenticatable
{
    use HasRoles;
    use HasUuids; // pairs with PERMISSIONS_KEY_TYPE=uuid
}
```

Nenastavený alebo prázdny kľúč znamená bigint; neznáma hodnota vyhodí InvalidConfigurationException z toolkitu, namiesto toho, aby potichu vytvorila kľúče bigint.

## Zámerne bez soft deletes

Roly a oprávnenia nepoužívajú soft deletes: unikátny index na name by kolidoval so soft-zmazanými riadkami a každý pivot sa pri zmazaní kaskáduje — odstránením roly či oprávnenia zmiznú aj jeho priradenia.

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