---
title: "Typované hodnoty — Attributes for Laravel | Roundly"
description: "Hodnoty si zachovávajú skutočný PHP typ — reťazce, čísla, booleany, polia aj dátumy sa vracajú bez ručného pretypovania."
url: https://roundly-consulting.com/sk/open-source/navody/attributes-for-laravel/typovane-hodnoty
language: sk
---

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

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

# Typované hodnoty

Hodnoty si pri zápise aj čítaní zachovávajú skutočný PHP typ — bez ručného pretypovania:

```php
use RoundlyConsulting\Attributes\Facades\Attributes;

$attributes = Attributes::for($product);

$attributes->set('color', 'white');       // string
$attributes->set('rating', 5);            // int
$attributes->set('on_sale', true);        // bool
$attributes->set('price', 9.99);          // float
$attributes->set('tags', ['a', 'b']);     // array
$attributes->set('published_at', now());  // datetime

$attributes->get('rating');               // int(5)
$attributes->get('on_sale');              // true
$attributes->get('published_at');         // CarbonImmutable, in the app timezone

// Model shorthand — the same manager underneath
$product->attachAttribute('rating', 5);
$product->getAttachedAttributeValue('rating'); // int(5)
```

## Ako sa typy ukladajú

Bez definície sa typ odvodí z PHP hodnoty, ktorú odovzdáte, a uloží sa do value\_type vedľa hodnoty, ktorá sa drží ako text:

| PHP hodnota | value\_type | Uloží sa ako | Prečíta sa ako |
| --- | --- | --- | --- |
| string (a všetko ostatné) | `string` | reťazec | string |
| int | `integer` | 5 → 5 ako text | int |
| float | `float` | najkratší text, ktorý sa prečíta ako presne ten istý float | float |
| bool | `boolean` | 1 alebo 0 | bool |
| array | `array` | JSON — celočíselné floaty si zachovajú desatinnú časť (\[2.0\] zostane \[2.0\]) | array |
| DateTimeInterface | `datetime` | reťazec ISO-8601 v UTC | CarbonImmutable v časovom pásme aplikácie |
| null | `string` | SQL NULL (value\_type je typ z definície, ak existuje) | null |

Dátumy sa normalizujú na UTC, takže jeden okamih má vždy jeden uložený reťazec, a vracajú sa ako ten istý okamih v časovom pásme aplikácie. Prázdny reťazec nie je dátum: pri definícii datetime vyhodí InvalidAttributeValueException namiesto uloženia aktuálneho času. Desatinné čísla si zachovajú plnú presnosť. Scopy na zhodu aj jedinečnosť porovnávajú polia podľa ich JSON textu, takže \[2.0\] a \[2\] sú rôzne hodnoty.

## Typ určuje definícia

Ak existuje definícia, rozhoduje jej typ: hodnota sa podľa neho overí aj uloží, takže reťazec „5“ z requestu sa pri definícii integer uloží a prečíta ako int 5 — rovnako ako každý reťazec, ktorý prijme pravidlo integer v Laraveli, napríklad „+5“:

```php
use RoundlyConsulting\Attributes\DataTransferObjects\AttributeDefinitionData;
use RoundlyConsulting\Attributes\Enums\AttributeType;
use RoundlyConsulting\Attributes\Facades\Attributes;

Attributes::define(new AttributeDefinitionData('rating', AttributeType::Integer));

Attributes::for($product)->set('rating', $request->input('rating')); // '5' from the request
Attributes::for($product)->get('rating');                            // int(5) — stored in the defined type
```

## Enum AttributeType

Podporované typy sú prípady enumu RoundlyConsulting\\Attributes\\Enums\\AttributeType. Enum sprístupňuje aj odvodenie a prevod, ktoré balík interne používa:

```php
use RoundlyConsulting\Attributes\Enums\AttributeType;

AttributeType::forValue(5);                 // AttributeType::Integer
AttributeType::forValue(now());             // AttributeType::DateTime
AttributeType::forValue('5');               // AttributeType::String_

AttributeType::Boolean->toStorage(true);    // '1'
AttributeType::Array_->toStorage(['a']);    // '["a"]'
AttributeType::Integer->fromStorage('42');  // 42

AttributeType::Float_->toStorage(0.1 + 0.2);                      // '0.30000000000000004' — full precision
AttributeType::DateTime->toStorage('2026-01-01 10:00:00+02:00');  // '2026-01-01T08:00:00+00:00' — UTC
AttributeType::Float_->isNumeric();                               // true — integer and float are one family
```

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