Všetky balíky
Attributes for Laravel
História a auditná stopa
Zapnite attributes.history.enabled a pri každom pripojení, zmene hodnoty či metadát alebo odpojení atribútu sa zaznamená revízia starý→nový. Predvolene je vypnutá — kým ju nezapnete, nezapíše sa ani jedna revízia:
ATTRIBUTES_HISTORY=trueuse RoundlyConsulting\Attributes\Facades\Attributes;
Attributes::for($product)->history(); // Collection<AttributeRevision> — newest first
Attributes::for($product)->history('color'); // filtered by attribute name
$product->history('color'); // model shorthand
$product->attributeHistory(); // the underlying MorphMany relationČo revízia obsahuje
| Stĺpec | Obsahuje |
|---|---|
type | RevisionType — attached, updated alebo detached. |
name | Názov atribútu. |
old_value, new_value | Uložené reťazce pred zmenou a po nej — pri šifrovaných atribútoch šifrový text. |
old_value_type, new_value_type | Hodnoty AttributeType pred zmenou a po nej. |
old_meta, new_meta | Metadáta pred zmenou a po nej, pretypované na Collection. |
owner_type, owner_id | Vlastniaci model (relácia owner() typu morph-to). |
created_at | Čas zmeny. |
use RoundlyConsulting\Attributes\Enums\RevisionType;
foreach ($product->history('color') as $revision) {
$revision->type; // RevisionType::Attached | Updated | Detached
$revision->old_value; // previous storage string, or null
$revision->new_value; // new storage string, or null on detach
$revision->old_value_type; // 'string', 'integer', ...
$revision->new_value_type;
$revision->old_meta; // Collection|null
$revision->new_meta;
$revision->created_at;
$revision->type->is(RevisionType::Updated); // bool
}
$product->attributeHistory('color')->limit(10)->get(); // a relation — query it freelyČo sa zaznamenáva
- attached — prvý zápis názvu cez ktorúkoľvek zapisovaciu metódu, vrátane meta(), a opätovné pripojenie odpojeného názvu.
- updated — zápis hodnoty či metadát k pripojenému názvu, vrátane hodnôt znova odoslaných synchronizáciou.
- detached — každé odstránenie pripojeného názvu: forget(), forgetExcept() a atribúty navyše, ktoré odstráni sync(), aj ich metódy na modeli.
Prečistenie revízií
attributes:prune sa týka len atribútov — prečistenie tabuľky revízií je na vašej aplikácii, napríklad plánovaným dopytom:
// routes/console.php
use Illuminate\Support\Facades\Schedule;
use RoundlyConsulting\Attributes\Models\AttributeRevision;
Schedule::call(function (): void {
AttributeRevision::query()
->where('created_at', '<', now()->subYear())
->forceDelete();
})->weekly();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.