NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Attributes for Laravel

Typované hodnoty

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

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 hodnotavalue_typeUloží sa akoPrečíta sa ako
string (a všetko ostatné)stringreťazecstring
intinteger5 → 5 ako textint
floatfloatnajkratší text, ktorý sa prečíta ako presne ten istý floatfloat
boolboolean1 alebo 0bool
arrayarrayJSONarray
DateTimeInterfacedatetimereťazec ISO-8601 v UTCCarbonImmutable v časovom pásme aplikácie
nullstringSQL 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. Desatinné čísla si zachovajú plnú presnosť.

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:

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:

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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.