megauser Опубликовано 26 сентября, 2020 Жалоба Поделиться Опубликовано 26 сентября, 2020 Есть импорт в csv , изначально не было артикулов, далее проставил артикулы нужные через файл, а потом попытался обновить их по названию. Как итог - почему то добавляются товары как новые. Хотел что товар обновлялся по уникальному названию продукта, и добавлял артикул, также и с вариантами. Уже оставил 3 поля Имя товара, артикул, вариант. имя товара совпадает с названиями на сайте и по логике должно обновить артикул, но добавляются как новые товары. Как победить недуг? Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 26 сентября, 2020 Жалоба Поделиться Опубликовано 26 сентября, 2020 откройте import.php и посмотрите его логику сразу станет все понятно Цитата Ссылка на сообщение Поделиться на другие сайты
megauser Опубликовано 26 сентября, 2020 Автор Жалоба Поделиться Опубликовано 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']); Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 26 сентября, 2020 Жалоба Поделиться Опубликовано 26 сентября, 2020 это означает что есть название артикула но нет название варианта if(!empty($variant['sku']) && empty($variant['name'])) в первом куске кода вам надо только заменить строчку с sql запросом на такой который вы хотите добиться и все а не удалять его полностью. или написать новый if под себя Цитата Ссылка на сообщение Поделиться на другие сайты
megauser Опубликовано 27 сентября, 2020 Автор Жалоба Поделиться Опубликовано 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']); Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 1 октября, 2020 Жалоба Поделиться Опубликовано 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']); Цитата Ссылка на сообщение Поделиться на другие сайты
filth Опубликовано 1 октября, 2020 Жалоба Поделиться Опубликовано 1 октября, 2020 В 27.09.2020 в 01:01, shooroop сказал: это означает что есть название артикула но нет название варианта if(!empty($variant['sku']) && empty($variant['name'])) в первом куске кода вам надо только заменить строчку с sql запросом на такой который вы хотите добиться и все а не удалять его полностью. или написать новый if под себя Благодарствую за толчек в нужное направление, теперь работает как надо. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.