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

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
modelAttribute::class—Eloquent model, ktorý ukladá atribúty. Musí to byť model Attribute z balíka alebo jeho podtrieda; čokoľvek iné vyhodí výnimku.
tableattributes—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_typebigintATTRIBUTES_KEY_TYPETyp 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í.
strictfalseATTRIBUTES_STRICTOdmietne 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_days30ATTRIBUTES_PRUNE_AFTER_DAYSPredvolený 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.enabledfalseATTRIBUTES_HISTORYZaznamenáva revíziu starý→nový pri každom pripojení, zmene hodnoty či metadát a odpojení.
history.tableattribute_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ícieTypÚčel
typestringstring, 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.
rulesarrayĎ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.
requiredboolVynucuje ho $model->validateAttributes(). Číta sa rovnako ako logické hodnoty v env; čokoľvek iné vyhodí výnimku.
defaultmixedVracajú ho čítania, keď atribút nie je pripojený. Nikdy sa neukladá.
uniquestring / boolowner 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.
encryptedboolUloží 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=false

Logické 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=attributes

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.