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

Čítanie atribútov

Handle vlastníka pokryje bežné čítanie — hodnoty s uplatnenou predvolenou hodnotou, prítomnosť, hromadné mapy aj históriu:

use RoundlyConsulting\Attributes\Facades\Attributes;

$attributes = Attributes::for($product);

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

Na modeli

Trait pridáva bohatšie čítanie — riadok Attribute, reťazcovú podobu a metadáta. Attributes::for($model)->get() a has() volajú tie isté metódy:

$product->getAttachedAttributes();                      // Collection: ['color' => 'white', 'rating' => 5]
$product->getAttachedAttributeValue('color');           // typed value (mixed)
$product->getAttachedAttributeValueAsString('rating');  // '5' (string view)
$product->getAttachedAttribute('color');                // Attribute model or null
$product->hasAttachedAttribute('color');                // bool
$product->getAttachedAttributeMeta('color');            // Collection|null

Prístupový objekt attr()

attr() vracia typovaný hodnotový objekt — jeden vstupný bod namiesto samostatnej metódy pre každý typ. Predvolené hodnoty z definícií sa uplatnia automaticky:

$product->attr('rating')->int();        // ?int (falls back to the defined default)
$product->attr('price')->float();       // ?float
$product->attr('on_sale')->bool();      // ?bool
$product->attr('tags')->array();        // ?array
$product->attr('published_at')->date(); // ?Carbon
$product->attr('color')->string();      // ?string
$product->attr('color')->raw();         // underlying typed value
$product->attr('color')->isNull();      // bool
(string) $product->attr('color');       // '' when unset, else the value

Čítanie podľa typu

Metódy pre jednotlivé typy naďalej fungujú. Každá vráti null, keď atribút nie je nastavený a nemá predvolenú hodnotu:

$product->attributeInt('rating');        // ?int
$product->attributeFloat('price');       // ?float
$product->attributeBool('on_sale');      // ?bool
$product->attributeArray('tags');        // ?array (a scalar is wrapped in an array)
$product->attributeDate('published_at'); // ?Carbon

Eager loading

Všetky čítacie metódy rešpektujú eager loading: najprv načítajte attachedAttributes a čítanie pobeží nad načítanou reláciou namiesto dopytu pri každom volaní:

$products = Product::query()->with('attachedAttributes')->get();

foreach ($products as $product) {
    $product->getAttachedAttributeValue('color'); // read from the loaded relation
    $product->attr('rating')->int();              // no query per call
}

$product->load('attachedAttributes'); // or load on a single model

Hromadné čítanie a export

Okrem all(), toKeyValue() a keys() na handli sa dajú kolekcie atribútov splošťovať na jednoduché mapy:

use RoundlyConsulting\Attributes\Models\Attribute;

$product->attachedAttributes()->get()->toKeyValue(); // array<name, value>
Attribute::collect()->keyByName();                   // every stored attribute, keyed by name

Hromadné mapy obsahujú len uložené riadky. Predvolené hodnoty uplatňuje čítanie jednej hodnoty — getAttachedAttributeValue(), attr(), čítanie podľa typu a Attributes::for()->get() — a to len vtedy, keď atribút nie je pripojený; pripojený atribút s hodnotou null sa prečíta ako null. getAttachedAttributes(), all() ani toKeyValue() ich neuplatňujú nikdy. Attribute::collect() načíta všetky riadky atribútov v tabuľke, naprieč všetkými vlastníkmi.

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.