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

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 names

Metó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 shorthand

Prehľ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 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.