NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
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=true
use 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ĺpecObsahuje
typeRevisionType — attached, updated alebo detached.
nameNázov atribútu.
old_value, new_valueUložené reťazce pred zmenou a po nej — pri šifrovaných atribútoch šifrový text.
old_value_type, new_value_typeHodnoty AttributeType pred zmenou a po nej.
old_meta, new_metaMetadáta pred zmenou a po nej, pretypované na Collection.
owner_type, owner_idVlastniaci 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 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.