Čí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 firstNa 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|nullPrí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'); // ?CarbonEager 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 modelHromadné čí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 nameHromadné 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 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.