withScheme('https')->__toString(); $id = ResourceSite::parseIdFromLink($url); $id = $id === null ? null : intval($id); if ($model instanceof BaseModel) { if ($id !== null) { $url = $site->formatResourceLink($model::class, $id, strval($id)); } } $resource = ExternalResource::query() ->where(ExternalResource::ATTRIBUTE_SITE, $site->value) ->where(fn (Builder $query) => $query->where(ExternalResource::ATTRIBUTE_LINK, $url) ->orWhere(ExternalResource::ATTRIBUTE_LINK, $url.'/')) ->first(); if ($resource === null) { Log::info("Creating External Resource {$site->localize()} -> '{$url}'"); $resource = ExternalResource::query()->create([ ExternalResource::ATTRIBUTE_LINK => $url, ExternalResource::ATTRIBUTE_SITE => $site->value, ExternalResource::ATTRIBUTE_EXTERNAL_ID => $id, ]); } $model?->resources()?->attach($resource); return $resource; } }