Product update issue
-
Hi friends,
I created custom product import logic for product insert via excel. But have some issues:
I have created a custom Product, a custom ProductFlat, ProductInventory, and then have connected them. Product insert is working properly and I can see all changes in the admin section. But when i am trying to change something from admin to update the product it's not working. Here is the code:$pro = Product::firstOrCreate( ['sku' => $row[0]], ['attribute_family_id' => 1, 'type' => 'simple'] ); ProductInventory::updateOrCreate( ['product_id' => $pro->id], [ 'qty' => $row[18], 'inventory_source_id' => 1, 'vendor_id' => 0 ] ); $categories = explode("/", $row[1]); $power_types = explode("/", $row[27]); $color_ranges = explode("/", $row[29]); $insulation_types = explode("/", $row[26]); $lamp_type_id = AttributeOption::where('admin_name', $row[25])->with('translations')->get(); $voltage_type_id = AttributeOption::where('admin_name', $row[28])->with('translations')->get(); $brands_types=AttributeOption::where('admin_name', $row[5])->with('translations')->get(); /*Brands*/ $brands_types_translations=[]; foreach ($brands_types as $bran){ foreach ($bran->translations as $trans) { $brands_types_translations[$trans->locale]=$trans->label; } } /*Brands*/ /*lamp_type*/ $lamp_type_translations=[]; foreach ($lamp_type_id as $and){ foreach ($and->translations as $trans) { $lamp_type_translations[$trans->locale]=$trans->label; } } /*lamp_type*/ /* $voltage*/ $voltage_type_translations=[]; foreach ($voltage_type_id as $value){ foreach ($value->translations as $trans) { $voltage_type_translations[$trans->locale]=$trans->label; } } /* $voltage*/ $crosses_products = array_map('trim', explode(',', $row[20])); $related_products = array_map('trim', explode(',', $row[21])); $imagesMul = array_map('trim', explode('/', $row[23])); $products_array_cross[$key + 1][$pro->id] = $crosses_products; $products_array_related[$key + 1][$pro->id] = $related_products; $power = ''; $power_types_ids=''; $power_types_names=[]; foreach ($power_types as $type) { $power_names = AttributeOption::where('admin_name', $type)->with('translations')->get(); foreach ($power_names[0]->translations as $tr){ if(! isset($power_types_names[$tr->locale])) { $power_types_names[$tr->locale] = ''; } $power_types_names[$tr->locale] .= $tr->label.','; } $power_types_ids .= AttributeOption::where('admin_name', $type)->pluck('id'); } $power_types_ids = $this->triming($power_types_ids); $color_rang_names = []; $color_rang_id = ''; foreach ($color_ranges as $kay=>$color_range) { $names= AttributeOption::where('admin_name', 'Լույս '.$color_range)->with('translations')->get(); foreach ($names[0]->translations as $tr){ if(! isset($color_rang_names[$tr->locale])) { $color_rang_names[$tr->locale] = ''; } $color_rang_names[$tr->locale] .= $tr->label.','; } $color_rang_id .= AttributeOption::where('admin_name', 'Լույս ' . $color_range)->pluck('id'); } $color_rang_id = $this->triming($color_rang_id); $insulation_type_id = ''; $insulation_type_names=[]; foreach ($insulation_types as $insulation_type) { $insulation_type_name = AttributeOption::where('admin_name', $insulation_type)->with('translations')->get(); foreach ($insulation_type_name[0]->translations as $tr){ if(! isset($insulation_type_names[$tr->locale])) { $insulation_type_names[$tr->locale] = ''; } $insulation_type_names[$tr->locale] .= $tr->label.','; } $insulation_type_id .= AttributeOption::where('admin_name', $insulation_type)->pluck('id'); } $insulation_type_id = $this->triming($insulation_type_id); foreach ($categories as $category) { $cats = CategoryTranslation::where('name', $category)->where('locale', 'hy')->pluck('category_id'); $pro->categories()->attach($cats); } foreach (core()->getAllLocales() as $key => $locale) { $pr = ProductFlat::create([ 'product_id' => $pro->id, 'locale' => $locale->code, 'sku' => $row[0], 'name' => $row[2 + $key], 'url_key' => $row[11], 'new' => $row[16], 'featured' => $row[17], 'price' => $row[9], 'channel' => 'default', 'special_price' => $row[10], "brands" => $brands_types[0]->id, 'Brands_label'=> $brands_types_translations[$locale->code], 'lamp_type' => $lamp_type_id[0]->id, 'lamp_type_label'=>$lamp_type_translations[$locale->code], 'cartridge' => $insulation_type_id, 'Cartridge_label'=>rtrim($insulation_type_names[$locale->code],','), 'voltage' => $voltage_type_id[0]->id, 'Voltage_label'=>$voltage_type_translations[$locale->code], 'color_range' => $color_rang_id, 'color_range_label'=>rtrim($color_rang_names[$locale->code],','), 'description' => $row[6], 'status' => $row[30], 'short_description' => $row[7], 'power' => $power_types_ids, 'Power_label' => rtrim($power_types_names[$locale->code],','), ]); $pr->created_at=$pro->created_at; $pr->updated_at=$pro->updated_at; $pr->save(); } $locale=app()->getLocale(); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 30,//lamp_type 'text_value' => $lamp_type_id[0]->id, 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 29,//brands 'text_value' => $brands_types[0]->id, 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 31,//cartridge 'text_value' => $insulation_type_id, 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 32,// voltage 'text_value' => $voltage_type_id[0]->id,//$voltage_type_translations[$locale->code], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 27,// color_range 'text_value' => $color_rang_id, 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 2,//name 'text_value' => $row[2 + $key], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 1,//sku 'text_value' => $row[0], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 28,//power 'text_value' => $power, 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 11,//price 'float_value' => $row[9], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 13,//special_price 'float_value' => $row[10], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 5,//new 'boolean_value' => $row[16], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 6,//featured 'boolean_value' => $row[17], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 8,//status 'boolean_value' => $row[30], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 3,//url_key 'text_value' => $row[11], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 10,//description 'text_value' => $row[6], 'locale' => $locale, 'channel' => 'default' ]); ProductAttributeValue::create([ 'product_id' => $pro->id, 'attribute_id' => 9,//short_description 'text_value' => $row[7], 'locale' => $locale, 'channel' => 'default' ]); $path = 'images/' . $row[15]; $in_product_path = 'app/public/images/' . $row[15]; if ($row[23]) { foreach ($imagesMul as $im) { $pathMu = 'images/' . $im; if (Storage::exists($pathMu)) { $ol = 'images/' . $im; $url_d = 'product/' . $pro->id . '/' . $im; $files = Storage::copy($ol, $url_d); if ($files) { ProductImage::create([ 'product_id' => $pro->id, 'path' => $url_d, 'type' => null ]); } } } } if (Storage::exists($path)) { $old = 'images/' . $row[15]; $url_des = 'product/' . $pro->id . '/' . $row[15]; $files = Storage::copy($old, $url_des); if ($files) { ProductImage::create([ 'product_id' => $pro->id, 'path' => $url_des, 'type' => null ]); } }
-
Hi @Megalight,
Are you getting some error or something? can you share a screenshot so that I can understand?
-
No, can't see any errors, but wan a want to update products updating the only name, description
-
I am not getting this, can you share with me some screenshots of the products listing on the admin panel and where you editing.
Or can you give me the excel so that I can check on my instance?
-
It's my excel shite
https://drive.google.com/file/d/1BEFU5id0WtQ-NNmn_425YNbGnBnat5AA/view?usp=sharing.and this is a video after import products from this shite.
https://recordit.co/8vwwvp6uTqYou can see in the video, success redirect after the update but nothing saved
-
Any news???
-
Hi,
According to your video, it looks like, there must be some linking problem. I am checking will let you know.
-
Hi,
You can try this also, maybe this will help you.
-
What about custom attributes with multi-select vales ??
I have the power, voltage, lamp-type to multi-select type for each product, how to add these values to the excel file from bagisto-bulk-upload plugin??? -
@Megalight
multiselect value are not supported to import currently, you may raise the feature for this here https://github.com/bagisto/bagisto-bulk-upload/issues, so team will add this feature as per your requirement.Thanks