---
title: "Typy kľúčov — Posts for Laravel | Roundly"
description: "Dve nezávislé nastavenia kľúčov — kľúč vášho modelu autora a vlastné id tabuliek príspevkov — oba pevne dané pri migrácii."
url: https://roundly-consulting.com/sk/open-source/navody/posts-for-laravel/typy-klucov
language: sk
---

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

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

# Typy kľúčov

Posts má dve nezávislé nastavenia typu kľúča, pretože ide o dva rôzne kľúče s rôznymi vlastníkmi:

| Kľúč | Smer | Čo typuje | Kto vlastní model |
| --- | --- | --- | --- |
| `key_type` | odchádzajúci | author\_id — morph stĺpec, ktorý ukazuje na váš model autora | vy (váš User, Team, …) |
| `primary_key_type` | prichádzajúci | id tabuliek posts, post\_categories, post\_tags, parent\_id a oboch pivotov — id, na ktoré ukazujú iné balíky | tento balík |

Aplikácia s bigint používateľmi a uuid príspevkami je úplne bežná; oba kľúče sú predvolene bigint:

```bash
POSTS_KEY_TYPE=uuid            # your User model is uuid-keyed
POSTS_PRIMARY_KEY_TYPE=bigint  # posts' own ids stay bigint
```

Obe hodnoty sa čítajú pri spustení migrácie, preto ich zvoľte pred migrate. Nerozpoznaná hodnota vyhodí InvalidConfigurationException namiesto migrácie s bigint a neskoršia zmena znamená migráciu dát.

## Prečo je primary\_key\_type predvolene bigint

Na príspevok polymorfne odkazujú iné balíky — dá sa označiť „páči sa mi“ aj nahlásiť. Morph stĺpec v Laraveli ($table->morphs('likeable')) je unsigned bigint, takže na striktnom engine, ako je PostgreSQL, sa doň uuid príspevku nezmestí:

```
SQLSTATE[22P02]: invalid input syntax for type bigint: "019f6f33-22b8-737f-a581-849e7cdc517a"
```

SQLite vás neupozorní — vďaka typovej afinite potichu uloží reťazec do celočíselného stĺpca, takže zelené testy na SQLite tu nič nedokazujú. Na chybu nie je potrebný ani cudzí kľúč: polymorfný stĺpec ho mať nemôže.

primary\_key\_type meňte len vtedy, keď všetky morph ciele v aplikácii zdieľajú jeden typ kľúča. Pri POSTS\_PRIMARY\_KEY\_TYPE=uuid musí mať uuid kľúč aj každý ďalší model, na ktorý ukazujú označenia „páči sa mi“, nahlásenia či komentáre — zmiešaná aplikácia nie je podporovaná. Ak používate históriu slugov s uuid alebo ulid príspevkami, nastavte pred migráciou tabuľky histórie sluggable.key\_type (SLUGGABLE\_KEY\_TYPE) na rovnakú hodnotu.

## Na modeloch

Post, Category a Tag sa riadia podľa primary\_key\_type cez concern HasConfigurableKey, postavený na HasUniqueStringIds z Laravelu a pri bigint vypnutý. Kľúče uuid sa generujú cez Str::uuid7(), ulid cez Str::ulid() a chybne formátované id vo väzbe routy sa odmietne skôr, než sa dostane do databázy.

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