---
title: "Fasáda Attributes — Attributes for Laravel | Roundly"
description: "Attributes::for($owner) na každé čítanie a zápis jedného modelu, plus definície, validácia, prečistenie a zaznamenávajúci fake."
url: https://roundly-consulting.com/sk/open-source/navody/attributes-for-laravel/fasada
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)

# Fasáda Attributes

Odporúčaným vstupným bodom je RoundlyConsulting\\Attributes\\Facades\\Attributes. Attributes::for($owner) vráti handle atribútov daného vlastníka — všetky čítania aj zápisy na jednom mieste:

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

// Writes (validated against definitions, recorded in history, events fired)
Attributes::for($product)->set('color', 'red', meta: ['hex' => '#f00']);     // Attribute
Attributes::for($product)->set('color', 'blue');                              // new value, meta kept
Attributes::for($product)->setMany(['color' => 'red', 'size' => 'L']);        // Collection<Attribute>, keeps others
Attributes::for($product)->sync(['color' => 'red'], forceDelete: false);      // exactly this set
Attributes::for($product)->forget(['color'], forceDelete: false);             // int removed ('color' works too)
Attributes::for($product)->forgetExcept(['color']);                           // list<string> removed
Attributes::for($product)->meta('color', ['hex' => '#ff0000']);               // replace one attribute's meta (null clears)
Attributes::for($product)->stage()->set('color', 'red')->meta('color', ['hex' => '#f00'])->save(); // or ->sync()

// Reads
Attributes::for($product)->all();            // Collection<name, value>
Attributes::for($product)->toKeyValue();     // array<name, value>
Attributes::for($product)->keys();           // list<string>
Attributes::for($product)->get('color');     // value (or the defined default)
Attributes::for($product)->has('color');     // bool
Attributes::for($product)->history('color'); // Collection<AttributeRevision>, newest first

// Housekeeping
Attributes::prune(30);   // force-delete attributes trashed more than 30 days ago (default: config)
```

Zápisy sa overia voči definíciám, pri zapnutej histórii sa zaznamenajú a spúšťajú udalosti. setMany() a sync() prijímajú ako posledný argument voliteľnú mapu metadát podľa názvu (meta: \['color' => \['hex' => '#f00'\]\]). Zápis hodnoty uložené metadáta atribútu ponechá, pokiaľ neodovzdáte nové; meta() ich nahradí a prejde prísnym režimom, históriou aj udalosťou AttributeAttached ako každý iný zápis.

Zápisy platia celé alebo vôbec: setMany(), sync() a stage()->save() overia každú hodnotu ešte pred prvým zápisom a bežia v jednej databázovej transakcii, takže neplatná hodnota či zlyhaný zápis nechá vlastníka presne v pôvodnom stave — nič sa neodpojí, nič sa nezapíše len napoly.

## Handle vlastníka

Attributes::for($owner) vráti handle OwnerAttributes. Názvy sú vždy obmedzené na tohto vlastníka:

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `set($name, $value = null, $meta = null)` | `Attribute` | Pripojí alebo aktualizuje jeden atribút; meta je pole alebo Collection — bez nej uložené metadáta zostanú. |
| `setMany(array $attributes, array $meta = [])` | `Collection<int, Attribute>` | Pripojí alebo aktualizuje viacero, všetko alebo nič; ostatné atribúty zostanú. |
| `sync(array $attributes, bool $forceDelete = false, array $meta = [])` | `Collection<int, Attribute>` | Nastaví atribúty presne na túto množinu, všetko alebo nič. |
| `forget(array\|string $names, bool $forceDelete = false)` | `int` | Odstráni atribúty; vráti ich počet. |
| `forgetExcept(array $keep, bool $forceDelete = false)` | `list<string>` | Odstráni všetky neponechané atribúty; vráti odstránené názvy. |
| `meta($name, $meta)` | `Attribute` | Nahradí metadáta jedného atribútu (null ich vymaže) — cez prísny režim, históriu aj udalosti. |
| `stage()` | `AttributeWriter` | Fluentný builder; save() → setMany(), sync() → sync(). |
| `all() / toKeyValue() / keys()` | `Collection / array / list<string>` | Všetky uložené atribúty vlastníka. |
| `get($name) / has($name)` | `mixed / bool` | Jedna typovaná hodnota (s predvolenou) / prítomnosť. |
| `history(?string $name = null)` | `Collection<int, AttributeRevision>` | Zaznamenané revízie, najnovšie prvé. |

## Metódy fasády

Metódy pre definície a validáciu delegujú na singleton AttributeRegistry — pozrite Definície a validácia:

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `for(Model $owner)` | `OwnerAttributes` | Handle vlastníka — všetky čítania a zápisy pre jeden model. |
| `prune(?int $days = null)` | `int` | Natrvalo vymaže atribúty zmazané pred viac ako $days dňami (predvolene prune\_after\_days). |
| `define($definition) / defineMany(...$definitions)` | `AttributesManager` | Zaregistruje globálne definície (reťaziteľné). |
| `has($name) / get($name) / all()` | `bool / ?AttributeDefinitionData / array` | Čítanie globálnych definícií. |
| `forget($name) / flush()` | `AttributesManager` | Odstráni jednu alebo všetky globálne definície — nie uložené hodnoty. |
| `resolveFor(?$owner, $name) / definitionsFor($owner)` | `definition(s)` | Definície podľa vlastníka — schéma modelu nad globálnou. |
| `default($name, ?$owner = null)` | `mixed` | Deklarovaná predvolená hodnota definície. |
| `requiredNames()` | `list<string>` | Názvy povinných globálnych definícií. |
| `validate($name, $value) / validateFor(?$owner, $name, $value)` | `void` | Vyhodí InvalidAttributeValueException. |
| `assertUnique($owner, $name, $value)` | `void` | Vyhodí DuplicateAttributeValueException. |
| `isStrict() / assertKnown($name, ?$owner = null)` | `bool / void` | Prísny režim; assertKnown() vyhodí UnknownAttributeException (schéma modelu vlastníka sa počíta ako registrácia). |
| `fake()` | `AttributesFake` | Iba na fasáde — zaznamenávajúci fake (pozrite Testovanie). |

## Metódy modelu sú skratky

Trait HasAttributes ponecháva krátke metódy na modeli — attachAttribute(), syncAttributes(), $product->attributes() a ďalšie — pre tie isté operácie. Každá deleguje na Attributes::for($this), takže sa správa rovnako a Attributes::fake() ju zaznamená. Čítanie podľa typu (attr(), attributeInt() …) a query scopy sú len na modeli.

## 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)
