Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

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

 

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

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


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

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

 

Р/S

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

 

Змінено користувачем l1key
Надіслати
Поділитися на інших сайтах


если задача актуальна, то решается за пару минут простым 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, то делайте бэкапы базы\таблицы!

Змінено користувачем 100napb
Надіслати
Поділитися на інших сайтах

$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
Надіслати
Поділитися на інших сайтах

26 minutes ago, chukcha said:

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

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

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

 

 

Надіслати
Поділитися на інших сайтах

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

 

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

  • +1 1
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.