---
title: "Schémy modelov — Attributes for Laravel | Roundly"
description: "Deklarujte definície atribútov priamo na modeli — ako vlastnosť alebo metódu — prekryté cez globálne definície len pre daný model."
url: https://roundly-consulting.com/sk/open-source/navody/attributes-for-laravel/schemy-modelov
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)

# Schémy modelov

Model môže deklarovať vlastné definície, ktoré prekryjú globálne len pre tento model. Deklarujte vlastnosť $attributeDefinitions:

```php
class Product extends Model implements HasAttributesContract
{
    use HasAttributes;

    /** @var array<string, array<string, mixed>> */
    protected array $attributeDefinitions = [
        'rating'  => ['type' => 'integer', 'rules' => ['min:1', 'max:5'], 'required' => true],
        'sku'     => ['type' => 'string', 'unique' => 'global'],
        'token'   => ['type' => 'string', 'encrypted' => true],
        'retries' => ['type' => 'integer', 'default' => 3],
    ];
}
```

…alebo verejnú metódu attributeDefinitions(), praktickú, keď sa schéma počíta:

```php
class Ticket extends Model implements HasAttributesContract
{
    use HasAttributes;

    /**
     * @return array<string, array<string, mixed>>
     */
    public function attributeDefinitions(): array
    {
        return [
            'priority'     => ['type' => 'integer', 'rules' => ['min:1', 'max:4'], 'required' => true],
            'escalated_at' => ['type' => 'datetime'],
            'channel'      => ['type' => 'string', 'default' => 'email'],
        ];
    }
}
```

## Ako sa schémy spájajú

```php
Attributes::define(new AttributeDefinitionData('retries', AttributeType::Integer, default: 99));

$product->attributeInt('retries'); // 3  — Product declares its own default
$order->attributeInt('retries');   // 99 — Order falls back to the global definition

Attributes::definitionsFor($product); // global definitions overlaid by Product's own
```

- Definícia deklarovaná na modeli prekryje rovnomennú globálnu — len pre tento model; ostatné modely si ponechajú globálnu.
- Položky používajú rovnaké kľúče ako konfigurácia definitions: type, rules, required, default, unique a encrypted.
- Ak model deklaruje oboje, metóda má prednosť pred vlastnosťou.
- Spracúvajú sa presne ako položky z konfigurácie, takže položka, ktorá nie je pole, alebo kľúč s preklepom vyhodí InvalidConfigurationException s cestou App\\Models\\Product::attributeDefinitions.<name>.<key>.
- Prísny režim, validácia, ukladaný typ, šifrovanie, jedinečnosť, predvolené hodnoty aj validateAttributes() rešpektujú schému modelu.

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