Všetky balíky
Attributes for Laravel
Schémy modelov
Model môže deklarovať vlastné definície, ktoré prekryjú globálne len pre tento model. Deklarujte vlastnosť $attributeDefinitions:
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:
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ú
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 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.