'array', ]; } public function actor(): BelongsTo { return $this->belongsTo(User::class, 'actor_id'); } public function auditable(): MorphTo { return $this->morphTo(); } public static function record(Request $request, string $action, ?Model $auditable = null, array $metadata = []): self { $log = new self([ 'actor_id' => $request->user()?->id, 'action' => $action, 'metadata' => $metadata, 'ip_address' => $request->ip(), 'user_agent' => substr((string) $request->userAgent(), 0, 500), ]); if ($auditable) { $log->auditable()->associate($auditable); } $log->save(); return $log; } }