Désactiver la journalisation
Les seeds de base de données, les imports en masse et les scripts de maintenance créent du bruit dans votre journal d'audit. AuditChain::withoutAudit() supprime toute journalisation d'audit au sein de son callback.
Utilisation
use GrayMatter\AuditChain\Facades\AuditChain; AuditChain::withoutAudit(function () { // Aucun log d'audit créé pendant ce callback User::factory()->count(1000)->create(); });
Tous les événements Eloquent et les événements personnalisés sont silencieusement ignorés pendant l'exécution du callback.
Cas d'utilisation courants
Seeds de base de données
class DatabaseSeeder extends Seeder { public function run(): void { AuditChain::withoutAudit(function () { User::factory()->count(50)->create(); Category::factory()->count(20)->create(); Product::factory()->count(200)->create(); }); } }
Imports en masse
AuditChain::withoutAudit(function () use ($rows) { foreach ($rows as $row) { Product::updateOrCreate( ['sku' => $row['sku']], ['price' => $row['price'], 'name' => $row['name']], ); } });
Scripts de maintenance
// Corriger une incohérence de données sans encombrer le journal d'audit AuditChain::withoutAudit(function () { User::whereNull('timezone')->update(['timezone' => 'UTC']); });
Valeurs de retour
withoutAudit() retourne ce que le callback retourne :
$users = AuditChain::withoutAudit(function () { return User::factory()->count(10)->create(); }); // $users est la collection créée
Imbrication
Les appels peuvent être imbriqués en toute sécurité. La journalisation reste désactivée jusqu'à ce que le callback le plus externe soit terminé :
AuditChain::withoutAudit(function () { User::create([...]); // pas de log d'audit AuditChain::withoutAudit(function () { Post::create([...]); // pas de log d'audit }); Comment::create([...]); // toujours pas de log d'audit });
Notes importantes
- Les événements personnalisés sont aussi supprimés :
$model->audit('shipped')à l'intérieur dewithoutAudit()est un no-op. - Utilisez avec parcimonie : chaque opération supprimée est une lacune dans votre journal d'audit. Pour les models critiques en matière de conformité, demandez-vous si cette lacune est acceptable.
- Envisagez le contexte à la place : si vous souhaitez conserver le journal d'audit mais marquer les entrées comme faisant partie d'un import, utilisez le contexte au lieu de supprimer entièrement la journalisation.