public function duplicate($sitemap_id) { $action = DB::transaction(function () use($sitemap_id) { try { /*start duplicate*/ $orginalSitemap = Sitemap::findOrFail($sitemap_id); $template = Template::findOrFail($orginalSitemap->template_id); //dc($template->slug); //return "view"; $clone = $orginalSitemap->replicate(); $clone->push(); //push $orginalSitemap->load('translations'); $orginalSitemap->load('translations.defaultpage'); // ?? kan weg, verkeerde translation template (tmp_page_location bijv) $orginalSitemap->load('references'); //$clone->setRelation('translations',$orginalSitemap->translations); foreach ($orginalSitemap->translations as $translation) { //dc(str_slug($translation->name)); $newName = $translation->name . ' copy ' . $clone->id; $newSlug = str_slug($newName); $translation->setAttribute('sitemap_id', $clone->id); $translation->setAttribute('name', $newName); $translation->setAttribute('slug', $newSlug); $created_translation = $clone->translations()->create($translation->getAttributes()); $translation->{$template->slug}->setAttribute('id', $created_translation->id); $created_translation->{$template->slug}()->create($translation->{$template->slug}->getAttributes()); } //dc($orginalSitemap->references->first()->pivot); foreach ($orginalSitemap->references as $reference) { $testArray[] = ['sitemap_id' => $clone->id, 'reference_id' => $reference->pivot->reference_id, 'component_id' => $reference->pivot->component_id, 'order_by_number' => $reference->pivot->order_by_number]; //dc($testArray); //dc($reference->getAttributes()); $clone->references()->sync([]); //pivot 3 key $clone->references()->attach($testArray); } /*end duplicate*/ if (request()->ajax()) { $data = ['status' => 'succes', 'statusText' => 'Ok', 'responseText' => 'Dupliceren is gelukt']; return response()->json($data, 200); } Flash::success('Your Sitemap translation has been duplicated!'); } catch (\Exception $e) { if (request()->ajax()) { $data = ['status' => 'succes', 'statusText' => 'Fail', 'responseText' => '' . $e->getMessage() . '']; return response()->json($data, 400); } //dc($e); Flash::error('Dupliceren is mislukt!<br>' . $e->getMessage() . ''); } }); if (request()->ajax()) { return $action; } //return "view"; return redirect()->back(); }