megauser Posted September 26, 2020 Report Share Posted September 26, 2020 Есть импорт в csv , изначально не было артикулов, далее проставил артикулы нужные через файл, а потом попытался обновить их по названию. Как итог - почему то добавляются товары как новые. Хотел что товар обновлялся по уникальному названию продукта, и добавлял артикул, также и с вариантами. Уже оставил 3 поля Имя товара, артикул, вариант. имя товара совпадает с названиями на сайте и по логике должно обновить артикул, но добавляются как новые товары. Как победить недуг? Quote Link to post Share on other sites
shooroop Posted September 26, 2020 Report Share Posted September 26, 2020 откройте import.php и посмотрите его логику сразу станет все понятно Quote Link to post Share on other sites
megauser Posted September 26, 2020 Author Report Share Posted September 26, 2020 4 minutes ago, shooroop said: откройте import.php и посмотрите его логику сразу станет все понятно К примеру есть товар "Товар 1" без артикула. Я создаю в csv файл "Товар 1" c артикулом "123" и пробую импортировать. Появляется новый товар , а хотел чтоб артикул просто обновлялся в товаре. по логике я нашел только // Если задан артикул варианта, найдем этот вариант и соответствующий товар if(!empty($variant['sku'])) { $this->db->query('SELECT v.id as variant_id, v.product_id FROM __variants v, __products p WHERE v.sku=? AND v.product_id = p.id LIMIT 1', $variant['sku']); $result = $this->db->result(); if($result) { // и обновим товар if(!empty($product)) $this->products->update_product($result->product_id, $product); // и вариант if(!empty($variant)) $this->variants->update_variant($result->variant_id, $variant); $product_id = $result->product_id; $variant_id = $result->variant_id; // Обновлен $imported_item->status = 'updated'; } } Думаю это нужно убрать полностью. Ну и самое сложное это наверное SQL запрос, логику которого не совсем понимаю if(!empty($variant['sku']) && empty($variant['name'])) $this->db->query('SELECT v.id as variant_id, p.id as product_id FROM __products p LEFT JOIN __variants v ON v.product_id=p.id WHERE v.sku=? LIMIT 1', $variant['sku']); Quote Link to post Share on other sites
shooroop Posted September 26, 2020 Report Share Posted September 26, 2020 это означает что есть название артикула но нет название варианта if(!empty($variant['sku']) && empty($variant['name'])) в первом куске кода вам надо только заменить строчку с sql запросом на такой который вы хотите добиться и все а не удалять его полностью. или написать новый if под себя Quote Link to post Share on other sites
megauser Posted September 27, 2020 Author Report Share Posted September 27, 2020 9 hours ago, shooroop said: это означает что есть название артикула но нет название варианта if(!empty($variant['sku']) && empty($variant['name'])) в первом куске кода вам надо только заменить строчку с sql запросом на такой который вы хотите добиться и все а не удалять его полностью. или написать новый if под себя получается 2 кусок кода трогать не надо, надо только sql запрос поменять тут? $this->db->query('SELECT v.id as variant_id, v.product_id FROM __variants v, __products p WHERE v.sku=? AND v.product_id = p.id LIMIT 1', $variant['sku']); Quote Link to post Share on other sites
filth Posted October 1, 2020 Report Share Posted October 1, 2020 if(!empty($variant['sku']) && empty($variant['name'])) $this->db->query('SELECT v.id as variant_id, p.id as product_id FROM __products p LEFT JOIN __variants v ON v.product_id=p.id WHERE p.name=? LIMIT 1', $product['name']); Quote Link to post Share on other sites
filth Posted October 1, 2020 Report Share Posted October 1, 2020 В 27.09.2020 в 01:01, shooroop сказал: это означает что есть название артикула но нет название варианта if(!empty($variant['sku']) && empty($variant['name'])) в первом куске кода вам надо только заменить строчку с sql запросом на такой который вы хотите добиться и все а не удалять его полностью. или написать новый if под себя Благодарствую за толчек в нужное направление, теперь работает как надо. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.