whereRaw("lower($column) = ?", Str::lower($name)) ->first(); if (! $studio instanceof Studio) { Log::info("Creating studio '$name'"); $studio = Studio::query()->create([ Studio::ATTRIBUTE_NAME => $name, Studio::ATTRIBUTE_SLUG => Str::slug($name, '_'), ]); } return $studio; } public function ensureStudioHasResource(Studio $studio, ResourceSite $site, int $id): void { $resource = ExternalResource::query() ->firstOrCreate([ ExternalResource::ATTRIBUTE_SITE => $site->value, ExternalResource::ATTRIBUTE_EXTERNAL_ID => $id, ExternalResource::ATTRIBUTE_LINK => $site->formatResourceLink(Studio::class, $id), ]); $resource->studios()->syncWithoutDetaching($studio); } }