---
title: "Schéma a ukladanie — Translatable for Laravel | Roundly"
description: "Pridajte stĺpce jsonb s mapou jazykov cez Blueprint makro translatable(); hodnoty sa ukladajú ako obyčajný JSON objekt bez obalu."
url: https://roundly-consulting.com/sk/open-source/navody/translatable-for-laravel/schema-a-ukladanie
language: sk
---

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

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

# Schéma a ukladanie

Balík registruje Blueprint makro translatable(), ktoré vytvorí stĺpec jsonb. Použite ho vo vlastných migráciách:

```php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

Schema::create('topics', function (Blueprint $table): void {
    $table->id();
    $table->translatable('name');          // jsonb column
    $table->translatable('description')->nullable();
    $table->localizedSlug('slug');         // sluggable's macro — jsonb / json / text per engine
    $table->timestamps();
});
```

Makro sa registruje už vo fáze register() providera, takže je dostupné v každej migrácii. localizedSlug() je makro zo sluggable pre stĺpce slugov podľa jazyka.

## Statická analýza

Pre Larastan / PHPStan je makro deklarované ako translatable(string $name): ColumnDefinition, takže aj reťazené modifikátory ako ->nullable() prejdú kontrolou typov. Makro existuje, až keď sa service provider balíka spustí. Larastan spúšťa hostiteľskú aplikáciu s auto-discovery a makro v nej zvyčajne nájde — nie však vtedy, keď sa provider počas analýzy nenačíta: pri vývoji balíka pod Testbench, s dont-discover alebo s ručne registrovaným providerom. Migrácia, ktorá makro volá, by tam inak zlyhala s „Call to an undefined method“. Balík preto obsahuje rozšírenie pre PHPStan (RoundlyConsulting\\Translatable\\PHPStan\\TranslatableMacrosExtension), ktoré phpstan/extension-installer načíta cez extra.phpstan.includes — nič nekonfigurujete. Bez installera ho pridajte ručne:

```yaml
includes:
    - vendor/roundly-consulting/translatable-for-laravel/extension.neon
```

localizedSlug() deklaruje vlastné rozšírenie pre PHPStan z balíka sluggable.

## Formát uloženia

Každý atribút obsahuje obyčajný JSON objekt s kľúčmi podľa jazyka — bez akéhokoľvek obalu:

```json
{"en": "Investing", "sk": "Investovanie"}
```

Prázdne hodnoty a null sa nikdy neukladajú a atribút bez prekladov sa zapíše ako prázdny objekt. Riadky zapísané ručne písaným vzorom „json cast + accessor pre jazyk“ sa načítajú rovnako, preto pri prechode na tento balík netreba migrovať dáta. Nový jazyk neskôr pridáte zmenou konfigurácie — mapa jednoducho získa ďalší kľúč.

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