Konfigurácia
Publikovaný config/attributes.php v plnom znení, s príkladmi definícií v komentári:
return [
'model' => RoundlyConsulting\Attributes\Models\Attribute::class,
'table' => 'attributes',
'key_type' => env('ATTRIBUTES_KEY_TYPE', 'bigint'),
'strict' => env('ATTRIBUTES_STRICT', false),
'prune_after_days' => env('ATTRIBUTES_PRUNE_AFTER_DAYS', 30),
'history' => [
'enabled' => env('ATTRIBUTES_HISTORY', false),
'table' => 'attribute_revisions',
],
'definitions' => [
// '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],
],
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
model | Attribute::class | — | Eloquent model, ktorý ukladá atribúty. Musí to byť model Attribute z balíka alebo jeho podtrieda; čokoľvek iné vyhodí výnimku. |
table | attributes | — | Tabuľka, ktorú používa migrácia aj model. Prázdna hodnota sa považuje za nenastavenú a použije sa predvolená; hodnota, ktorá nie je reťazec, vyhodí výnimku. |
key_type | bigint | ATTRIBUTES_KEY_TYPE | Typ kľúča vlastníka v morph stĺpcoch: bigint, uuid alebo ulid (bez ohľadu na veľkosť písmen; iná hodnota pri spustení migrácií vyhodí InvalidConfigurationException). Číta sa pri spustení migrácií. |
strict | false | ATTRIBUTES_STRICT | Odmietne zápis hodnoty aj metadát pre názov bez globálnej definície aj bez definície v schéme modelu (UnknownAttributeException). |
prune_after_days | 30 | ATTRIBUTES_PRUNE_AFTER_DAYS | Predvolený vek v dňoch pre attributes:prune. Celé číslo, 0 alebo viac (0 vymaže všetky soft-deleted atribúty); prázdna hodnota (ATTRIBUTES_PRUNE_AFTER_DAYS=) sa považuje za nenastavenú a znamená 30; čokoľvek iné vyhodí výnimku. |
history.enabled | false | ATTRIBUTES_HISTORY | Zaznamenáva revíziu starý→nový pri každom pripojení, zmene hodnoty či metadát a odpojení. |
history.table | attribute_revisions | — | Tabuľka auditnej stopy. Prázdna hodnota sa považuje za nenastavenú a použije sa predvolená; hodnota, ktorá nie je reťazec, vyhodí výnimku. |
definitions | [] | — | Počiatočné definície registra podľa názvu atribútu; každá položka je pole. Načítajú sa raz pri štarte. |
Kľúče definície
Každá položka v definitions má ako kľúč názov atribútu a prijíma tieto kľúče:
| Kľúč definície | Typ | Účel |
|---|---|---|
type | string | string, integer, float, boolean, array alebo datetime (alebo prípad enumu AttributeType) — hodnota sa podľa neho overí aj uloží („5“ sa pri integer uloží ako 5). Nenastavený alebo prázdny typ znamená string; čokoľvek iné vyhodí výnimku. |
rules | array | Ďalšie validačné pravidlá Laravelu, uplatnené po pravidle samotného typu. Musí to byť pole (['min:1', 'max:5']); reťazec s pravidlami oddelenými zvislou čiarou vyhodí výnimku. |
required | bool | Vynucuje ho $model->validateAttributes(). Číta sa rovnako ako logické hodnoty v env; čokoľvek iné vyhodí výnimku. |
default | mixed | Vracajú ho čítania, keď atribút nie je pripojený. Nikdy sa neukladá. |
unique | string / bool | owner alebo true (v rámci typu vlastníka), global (naprieč všetkými vlastníkmi), none alebo false (nenastavená alebo prázdna hodnota tiež znamená none); čokoľvek iné vyhodí výnimku namiesto vypnutia jedinečnosti. Stojí na unikátnom indexe v databáze — aj pre šifrované hodnoty. |
encrypted | bool | Uloží hodnotu ako šifrový text cez Crypt. Číta sa rovnako ako logické hodnoty v env; čokoľvek iné vyhodí výnimku. |
// config/attributes.php
'definitions' => [
'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],
],Definície z konfigurácie sa do registra načítajú raz, pri štarte aplikácie; neplatná položka pri štarte vyhodí InvalidConfigurationException s cestou attributes.definitions.<name>.<key>. Definície môžete registrovať aj v kóde alebo ich deklarovať pre konkrétny model — pozrite Definície a validácia a Schémy modelov.
Prostredie (env)
Kľúče, ktoré sa líšia podľa nasadenia, sa čítajú z env:
# bigint | uuid | ulid — set before you run the migrations
ATTRIBUTES_KEY_TYPE=bigint
# reject attribute names that are not registered
ATTRIBUTES_STRICT=false
# default age (days) for attributes:prune
ATTRIBUTES_PRUNE_AFTER_DAYS=30
# record an old -> new revision on every change
ATTRIBUTES_HISTORY=falseLogické hodnoty v env prijímajú true/false, 1/0, on/off aj yes/no. Každé nastavenie sa číta prísne: nenastavený kľúč — chýbajúci, null alebo prázdny (KEY= v .env) — použije predvolenú hodnotu a akákoľvek iná neplatná hodnota vyhodí InvalidConfigurationException s názvom kľúča — nikdy sa potichu nenahradí.
Výsledné hodnoty kedykoľvek overíte príkazom about v Laraveli. Definície sa vypisujú len ako počet, nikdy podľa názvu — názov atribútu často pomenúva práve to tajomstvo, ktoré chráni príznak encrypted:
php artisan about --only=attributesPrejavte 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 kryptomienOdoslaní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.