Soft Deletes
AuditChain détecte automatiquement lorsqu'un model utilise le trait SoftDeletes de Laravel et capture les événements supplémentaires en conséquence. Aucune configuration requise.
Détection automatique
Lorsque votre model utilise SoftDeletes, AuditChain enregistre automatiquement des listeners pour les événements restored et forceDeleted en plus des événements standard created, updated et deleted :
use Illuminate\Database\Eloquent\SoftDeletes; use GrayMatter\AuditChain\Concerns\HasAuditTrail; use GrayMatter\AuditChain\Contracts\Auditable; class Document extends Model implements Auditable { use HasAuditTrail, SoftDeletes; }
Événements capturés
| Action | Événement | old_values | new_values |
|---|---|---|---|
$doc->delete() |
deleted |
Attributs du model | -- |
$doc->restore() |
restored |
-- | Attributs du model |
$doc->forceDelete() |
forceDeleted |
Attributs du model | -- |
Les soft deletes enregistrent deleted — le même nom d'événement qu'une suppression classique. La différence est que le model existe toujours dans la base de données. Les événements restored et forceDeleted ne se déclenchent que sur les models avec SoftDeletes.
Exemple de cycle de vie complet
$document = Document::create(['title' => 'Report Q4']); // audit log: event=created $document->update(['title' => 'Report Q4 (Final)']); // audit log: event=updated $document->delete(); // audit log: event=deleted (soft delete) $document->restore(); // audit log: event=restored $document->forceDelete(); // audit log: event=forceDeleted (permanent)
Fonctionne avec les deux modes
La détection des SoftDeletes fonctionne de manière identique avec HasActivityLog (mode léger) et HasAuditTrail (mode complet). En mode complet, tous les événements de soft delete sont inclus dans la chaîne de hash cryptographique.