whereHas('domains', fn (Builder $query) => $query->where('domain', $domain)) ->with('domains') ->first(); if ($tenant) { $this->setCurrentDomain($tenant, $domain); return $tenant; } throw new TenantCouldNotBeIdentifiedOnDomainException($args[0]); } public function resolved(Tenant $tenant, mixed ...$args): void { $this->setCurrentDomain($tenant, $args[0]); } protected function setCurrentDomain(Tenant $tenant, string $domain): void { /** @var Tenant&Model $tenant */ static::$currentDomain = $tenant->domains->where('domain', $domain)->first(); } public function getArgsForTenant(Tenant $tenant): array { /** @var Tenant&Model $tenant */ $tenant->unsetRelation('domains'); /** @param Domain&Model $domain */ return $tenant->domains->map(function (Domain $domain) { /** @var Domain&Model $domain */ return [$domain->domain]; })->toArray(); } }