resolveAnalyticsModel('AnalyticsWebsite'); if (! $class) { return null; } return $this->hasMany($class); } /** * Get all analytics goals owned by this user. */ public function analyticsGoals(): ?HasMany { $class = $this->resolveAnalyticsModel('AnalyticsGoal'); if (! $class) { return null; } return $this->hasMany($class); } /** * Resolve an Analytics model class, checking common namespaces. */ protected function resolveAnalyticsModel(string $model): ?string { $candidates = [ "Core\\Mod\\Analytics\\Models\\{$model}", "App\\Models\\{$model}", ]; foreach ($candidates as $candidate) { if (class_exists($candidate)) { return $candidate; } } return null; } }