whereHas('domains', function (Builder $query) use ($domain) { $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, ...$args): void { $this->setCurrentDomain($tenant, $args[0]); } protected function setCurrentDomain(Tenant $tenant, string $domain): void { static::$currentDomain = $tenant->domains->where('domain', $domain)->first(); } public function getArgsForTenant(Tenant $tenant): array { $tenant->unsetRelation('domains'); return $tenant->domains->map(function (Domain $domain) { return [$domain->domain]; })->toArray(); } }