writeActivityLog('created', $model->getAttributes()); }); static::updated(function ($model) { $changes = $model->getChanges(); unset($changes['updated_at']); if (empty($changes)) { return; } $diff = []; foreach ($changes as $key => $newValue) { $diff[$key] = [ 'old' => $model->getOriginal($key), 'new' => $newValue, ]; } $model->writeActivityLog('updated', $diff); }); } protected function writeActivityLog(string $action, array $data): void { ActivityLog::create([ 'admin_id' => auth('admin')->id(), 'model_type' => static::class, 'model_id' => $this->getKey(), 'action' => $action, 'changes' => $data, 'created_at' => now(), ]); } }