Odstraňovanie a synchronizácia
Odstránenie je predvolene soft delete; s forceDelete: true sa záznam vymaže natrvalo:
use RoundlyConsulting\Attributes\Facades\Attributes;
Attributes::for($product)->forget('color'); // soft delete; returns the count removed
Attributes::for($product)->forget(['color', 'size'], forceDelete: true); // permanently
Attributes::for($product)->forgetExcept(['color']); // list<string> of the removed namesMetódy na modeli sú skratky pre forget() a forgetExcept() cez ten istý manager:
$product->syncAttributeMeta('color', collect(['is_pretty' => 'yes']));
$product->detachAttribute('color');
$product->detachAttribute('color', forceDelete: true);
$product->detachAttributes(['color', 'size']);
$product->destroyAttributesExcept(['color']);
$product->destroyAttributes(['price']);Synchronizácia
sync() zosúladí atribúty modelu presne s danou množinou — atribúty mimo nej sa odstránia a každá zadaná hodnota sa pripojí alebo aktualizuje:
use RoundlyConsulting\Attributes\Facades\Attributes;
Attributes::for($product)->sync([
'color' => 'black',
'size' => 'large',
]); // exactly color and size remain
Attributes::for($product)->sync(['color' => 'black'], forceDelete: true); // hard-delete the rest
Attributes::for($product)->sync(['color' => 'black'], meta: ['color' => ['hex' => '#000']]);
Attributes::for($product)->sync([]); // remove every attribute
$product->syncAttributes(['color' => 'black']); // model shorthandPrehľad správania
- forget() — aj detachAttribute(), detachAttributes() a destroyAttributes() — odstráni uvedené atribúty a vráti ich počet; AttributeDetached sa spustí raz pre každý názov, ktorý bol naozaj pripojený (názov, ktorý pripojený nebol, nič nespraví), a pri zapnutej histórii sa zaznamená revízia detached.
- forgetExcept() — aj destroyAttributesExcept() — odstráni všetky atribúty mimo zoznamu na ponechanie rovnakou cestou, takže každé odstránenie spustí AttributeDetached a zaznamená revíziu detached. Vráti odstránené názvy.
- sync() — aj syncAttributes() — najprv overí každú zadanú hodnotu, až potom rovnako odstráni atribúty mimo množiny a pripojí každú hodnotu, všetko v jednej transakcii, a spustí AttributesSynced. Vráti pripojené modely Attribute.
- forgetExcept() alebo sync() s forceDelete natrvalo vymaže aj atribúty navyše, ktoré už boli soft-deleted.
- Soft-deleted hodnota uvoľní svoje miesto v jedinečnosti, takže ju môže prevziať iný vlastník.
Soft-deleted atribúty sa dajú obnoviť, kým ich natrvalo neodstráni attributes:prune (pozrite Artisan príkazy). Opätovné pripojenie názvu po soft delete obnoví jeho riadok s novou hodnotou aj metadátami — staré metadáta sa nevrátia.
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.