public function duplicate_prod() { $prodId = Input::get('id'); //save products basic fields $prods = Product::where('id', '=', $prodId)->get()->toArray(); $cats = []; $cats_prod = Product::find($prods[0]['id'])->categories()->get(); // $catalogImages = []; $catalogImages = Product::find($prods[0]['id'])->catalogimgs()->get(); // dd($catalogImages); unset($prods[0]['id'], $prods[0]['created_at'], $prods[0]['updated_at']); $prods[0]['product'] = "duplicate-" . $prods[0]['product']; $prods[0]['url_key'] = "duplicate-" . $prods[0]['url_key']; $saveDupProd = Product::create($prods[0]); //sync categories $saveDupProd->categories()->sync($cats_prod); //sync images foreach ($catalogImages as $catImg) { $saveImg = new CatalogImage(); $saveImg->filename = $catImg->filename; $saveImg->alt_text = $catImg->alt_text; $saveImg->image_mode = $catImg->image_mode; $saveImg->sort_order = $catImg->sort_order; $saveImg->catalog_id = $saveDupProd->id; $saveImg->save(); } // $saveDupProd->catalogimgs()->sync($catalogImages); //varients prods of products $chkProdVar = Product::where('parent_prod_id', '=', $prodId)->get()->toArray(); $prods_varients = []; if (!empty($chkProdVar)) { foreach ($chkProdVar as $prodVar) { unset($prodVar['id'], $prodVar['created_at'], $prodVar['updated_at']); $prodVar['product'] = "duplicate-" . $prodVar['product']; $prodVar['parent_prod_id'] = $saveDupProd->id; array_push($prods_varients, $prodVar); } } foreach ($prods_varients as $prod_var) { $saveDupProdVar = Product::create($prod_var); $attributes = AttributeSet::find($saveDupProdVar->attributeset['id'])->attributes; $saveDupProdVar->attributes()->sync($attributes); // DB::update(DB::raw("update has_options set attr_val = '$opt' where attr_id = $op and prod_id = " . $newConfigProduct->id)); } Session::flash("successDupProd", "Duplicate Product created successfully"); return redirect()->route("admin.products.view"); }