whereKey($template->id)->lockForUpdate()->firstOrFail(); $projects = $template->linkedProjects()->orderBy('id')->lockForUpdate()->get(); $template->delete(); foreach ($projects as $project) { $base = $project->baseTemplate()->first() ?? $this->createProjectBaseTemplate->handle($project); $base->forceFill(['configuration_snapshot' => $this->duplicateProjectConfiguration->export($project, DuplicateProjectConfiguration::copyableAreas())])->saveQuietly(); $project->forceFill(['project_template_id' => $base->id, 'template_overrides' => []])->saveQuietly(); foreach ($project->configurationRelations() as $relation) { $project->{$relation}()->update(['project_template_id' => $base->id]); } } }, 3); } }