Jump to content
Sign in to follow this  
l1key

Как безопасно удалить 6к товара...?

Recommended Posts

Всем привет, возникла такая вот проблемка.. Товары одного поставщика были загружены "как вышло" - если точнее часть опций отдельными товарами, объединялось все это с помощью модуля KIT SERIES в один товар.. что само собой не есть гуд .. так ка десятки дублей одного товара с разницей в одну опцию совсем не удобно и вызывает дополнительную нагрузку на хостинг при загрузке страницы категории с товаром .. 

было решено перегрузить все "нормально" то есть 1 товар и "связанные опции" с "изображениями опций про" .. тут тоже еще пляшем с бубном )) но уже вроде есть свет в конце тоннеля.. 

 

Суть проблемы: нужно удалить поставщика из базы так как при повторной загрузке в базе скорее всего будут проблемы с дублями артикулов .. может ошибаюсь конечно  .. 

                               если нет - то как удалить 6000 товаров и не получить битые ссылки ..


Пока писал придумал один вариант - это батч эдитором - изменить все артикула по поставщику и сделать наличие 0...

Что подскажите ? 

 

Р/S

так же требуется человек который сможет загрузить с помощью АОП  поставщика с "связанными опциями" и "изображениями опций про"

 

Edited by l1key

Share this post


Link to post
Share on other sites

если задача актуальна, то решается за пару минут простым sql-запросом вида

-- вот этот запрос покажет все нужные Вам товары
SELECT * FROM oc_product op WHERE op.manufacturer_id = 11;
-- если запрос выше показал то, что Вам нужно, то этот запрос ВЫКЛЮЧИТ указанные товары 
UPDATE oc_product op SET op.status = 0 WHERE op.manufacturer_id = 11;
-- ну а этим запросом можно, как говорится, с глаз долой из базы вон ))
DELETE FROM oc_product op WHERE op.manufacturer_id = 11;

где manufacturer_id = ??? легко подсмотреть, открыв в админке "каталог" - "производители", навести мышкой на карандашик напротив нужного Вам бренда и опустив глаза вниз окошка браузера, в поисках вот этой строки

Spoiler

image.png.8c0bd873977cd587e9b8807e8498ff67.png

 

Важно! Прежде всего выполните первый запрос, который select. ТОЛЬКО если он покажет в результатах нужные товары, можете выполнять update или delete. Если не уверены в своих действиях при выполнении запросов вида update \ delete, то делайте бэкапы базы\таблицы!

Edited by 100napb

Share this post


Link to post
Share on other sites

НУ-НУ..
Т.е. таблиц, кроме oc_prodict - нет?

Share this post


Link to post
Share on other sites
$query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product WHERE manufacturer_id = '11'");

if ($query->num_rows) {
	foreach ($query->rows as $result) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_filter WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_reward WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_recurring WHERE product_id = " . (int)$result['product_id'];
		$this->db->query("DELETE FROM " . DB_PREFIX . "review WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "coupon_product WHERE product_id = '" . (int)$result['product_id'] . "'");
	}
}

не надо благодарностей, просто поставь лайк сообщению.

  • +1 1

Share this post


Link to post
Share on other sites
26 minutes ago, chukcha said:

НУ-НУ..
Т.е. таблиц, кроме oc_prodict - нет?

Да, Вы правы. Поторопился. Прошу прощения.

Ниже @auditor предложил гораздо более полное\правильное решение.

 

 

Share this post


Link to post
Share on other sites

Если и удалять, то используя стандартный метод deleteProduct

 

Учтите, что в этот метод может быть добавлена логика из других модулей и связанных таблиц 

  • +1 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.