---
title: "Typy kľúčov — Messages for Laravel | Roundly"
description: "Zvoľte kľúče bigint, UUID alebo ULID pre tabuľky správ aj pre morph stĺpce odosielateľov a účastníkov — ešte pred migráciou."
url: https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel/typy-klucov
language: sk
---

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

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

# Typy kľúčov

Typy kľúčov v schéme určujú dve nezávislé nastavenia. Obe prijímajú bigint (predvolené), uuid alebo ulid; čokoľvek iné vyhodí InvalidConfigurationException s názvom kľúča:

| Nastavenie | Smer | Čo určuje |
| --- | --- | --- |
| `primary_key_type` | Dovnútra — na čo ukazujú iné balíky | Id tabuliek messaging\_threads, messaging\_messages a messaging\_participants a stĺpce thread\_id, parent\_message\_id, last\_read\_message\_id a last\_message\_id. |
| `key_type` | Von — na čo ukazuje tento balík | Morph stĺpce sender\_id a participant\_id, ktoré musia zodpovedať vašim modelom User, Company či iným účastníkom. |

```bash
MESSAGES_KEY_TYPE=uuid             # User uses HasUuids
# MESSAGES_PRIMARY_KEY_TYPE stays bigint
```

Obe sa čítajú pri spustení migrácií, preto ich zvoľte pred publikovaním a migráciou. Neskoršia zmena je dátová migrácia, nie úprava konfigurácie.

## key\_type musí zodpovedať vašim modelom

Ak necháte key\_type na bigint pri používateľoch s uuid, PostgreSQL odmietne hneď prvú konverzáciu:

```
SQLSTATE[22P02]: invalid input syntax for type bigint: "01a0fc2b-4518-722a-8e92-50589b45ba2a"
```

Všetky modely, ktoré posielajú správy alebo sa zúčastňujú, zdieľajú stĺpce sender\_id a participant\_id, takže musia používať jeden typ kľúča — bigint User a uuid Company sa zúčastniť oba nemôžu.

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

Na vlákno či správu ukazujú iné balíky polymorfne a morph stĺpec v Laraveli ($table->morphs(…)) je unsigned bigint. Na striktnom engine, ako je PostgreSQL, sa doň uuid nezmestí — s rovnakou chybou ako vyššie.

SQLite vás na žiadny z týchto nesúladov neupozorní — vďaka typovej afinite potichu uloží reťazec do celočíselného stĺpca, takže zelená SQLite sada tu nič nedokazuje.

## Jeden typ kľúča na aplikáciu

Ak nastavíte MESSAGES\_PRIMARY\_KEY\_TYPE=uuid, aj modely na druhom konci vašich polymorfných vzťahov musia mať uuid kľúče a balíky, ktorým tie stĺpce patria, s tým musia súhlasiť. Zmiešanú aplikáciu — uuid Thread a bigint Post, na ktoré ukazuje ten istý morph stĺpec — nepodporuje tento balík, rozdelenie morphs()/uuidMorphs() v Laraveli ani nič iné.

key\_type je druhá os: inštalácia správ s bigint kľúčmi a používateľmi s uuid je úplne bežná aplikácia — nastavte MESSAGES\_KEY\_TYPE=uuid a MESSAGES\_PRIMARY\_KEY\_TYPE nechajte na bigint, ako v príklade vyššie.

## Generované kľúče

Pri uuid a ulid si modely generujú id samy — UUIDv7 alebo ULID — oba časovo zoradené, takže radenie od najnovších aj vyhľadanie poslednej správy v schránke zostávajú deterministické pri každom type kľúča. Pri bigint prideľuje id databáza ako obvykle.

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