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.