Удаление ВСЕХ продуктов на Magento - PullRequest
17 голосов
/ 17 января 2012

На Magento есть много сообщений по этому вопросу.Большинство из них работают, но проблема с категориями, не сбрасывающими свои значения в НУЛЕ после выполнения кодов удаления / операторов SQL, по-прежнему сохраняется и не устраняется до сих пор.

Есть ли у кого-нибудь правильный код или процедура для правильногоудалить все товары из инвентаря и сбросить список категорий в ноль после его выполнения?

Заранее спасибо.

Ответы [ 10 ]

55 голосов
/ 09 ноября 2012

Удаление всех продуктов из Magento может быть легко достигнуто, просто запустите:

DELETE FROM `catalog_product_entity`

Из-за ограничений внешнего ключа, установленных в базе данных Magento, все остальные таблицы, в которых есть информация о продукте, хорошо очищены. Конечно, потребуется некоторое время, чтобы удалить много продуктов, но, по крайней мере, это будет хорошо очищено.

Если запрос не может быть запущен из-за максимального времени выполнения, вы всегда можете выполнить что-то вроде:

DELETE FROM `catalog_product_entity` LIMIT 10000

Обновление: эта логика также используется в ядре Magento, поэтому она безопасна! https://github.com/OpenMage/magento-mirror/blob/magento-1.8/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php#L462

13 голосов
/ 21 марта 2013

В автономном скрипте:

<?php
require 'app/Mage.php';
Mage::app('admin')->setUseSessionInUrl(false);


$products = Mage::getModel('catalog/product')->getCollection();    
foreach ($products as $product) {
    try {
        $product->delete();
    } catch(Exception $e) {
        echo "Product #".$product->getId()." could not be remvoved: ".$e->getMessage();
    }
}

Сделал это для более чем 1400 продуктов, работал нормально.После этого необходимо выполнить переиндексацию.

Остерегайтесь приведенного выше сценария, который удалит ВСЕ ваши продукты

5 голосов
/ 18 января 2012

Для удаления всех товаров вы можете использовать этот запрос:

TRUNCATE TABLE `catalog_product_bundle_option`;
TRUNCATE TABLE `catalog_product_bundle_option_value`;
TRUNCATE TABLE `catalog_product_bundle_selection`;
TRUNCATE TABLE `catalog_product_entity_datetime`;
TRUNCATE TABLE `catalog_product_entity_decimal`;
TRUNCATE TABLE `catalog_product_entity_gallery`;
TRUNCATE TABLE `catalog_product_entity_int`;
TRUNCATE TABLE `catalog_product_entity_media_gallery`;
TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
TRUNCATE TABLE `catalog_product_entity_text`;
TRUNCATE TABLE `catalog_product_entity_tier_price`;
TRUNCATE TABLE `catalog_product_entity_varchar`;
TRUNCATE TABLE `catalog_product_link`;
TRUNCATE TABLE `catalog_product_link_attribute`;
TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
TRUNCATE TABLE `catalog_product_link_attribute_int`;
TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
TRUNCATE TABLE `catalog_product_link_type`;
TRUNCATE TABLE `catalog_product_option`;
TRUNCATE TABLE `catalog_product_option_price`;
TRUNCATE TABLE `catalog_product_option_title`;
TRUNCATE TABLE `catalog_product_option_type_price`;
TRUNCATE TABLE `catalog_product_option_type_title`;
TRUNCATE TABLE `catalog_product_option_type_value`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_attribute_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_product_entity`;

TRUNCATE TABLE `cataloginventory_stock`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;

INSERT  INTO `catalog_product_link_type`(`link_type_id`,`code`) VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
INSERT  INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`) VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
INSERT  INTO `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');

С уважением:)

4 голосов
/ 18 января 2012

Независимо от метода, используемого для удаления товаров, перестройка индекса «Категория товаров» должна исправить счетчики.Перейдите в Система> Управление индексами.Установите флажок «Категории продуктов», измените действие (вверху справа) на «Переиндексировать» и нажмите «Отправить».

3 голосов
/ 17 января 2012

Чтобы удалить продукты, вы можете просто использовать бэкэнд:
Каталог> Управление продуктами> Выберите все чекбоксы, выберите Действие = Удалить и нажмите Отправить.
Это может работать очень хорошо для нескольких тысяч продуктов.

2 голосов
/ 01 августа 2013
Mage::getModel('catalog/product')->getCollection()->delete();
1 голос
/ 09 октября 2014

Проверено на Magento 1.7.0.2

    SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_product_bundle_option`;
TRUNCATE TABLE `catalog_product_bundle_option_value`;
TRUNCATE TABLE `catalog_product_bundle_selection`;
TRUNCATE TABLE `catalog_product_entity_datetime`;
TRUNCATE TABLE `catalog_product_entity_decimal`;
TRUNCATE TABLE `catalog_product_entity_gallery`;
TRUNCATE TABLE `catalog_product_entity_int`;
TRUNCATE TABLE `catalog_product_entity_media_gallery`;
TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
TRUNCATE TABLE `catalog_product_entity_text`;
TRUNCATE TABLE `catalog_product_entity_tier_price`;
TRUNCATE TABLE `catalog_product_entity_varchar`;
TRUNCATE TABLE `catalog_product_flat_1`;
TRUNCATE TABLE `catalog_product_link`;
TRUNCATE TABLE `catalog_product_link_attribute`;
TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
TRUNCATE TABLE `catalog_product_link_attribute_int`;
TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
TRUNCATE TABLE `catalog_product_link_type`;
TRUNCATE TABLE `catalog_product_option`;
TRUNCATE TABLE `catalog_product_option_price`;
TRUNCATE TABLE `catalog_product_option_title`;
TRUNCATE TABLE `catalog_product_option_type_price`;
TRUNCATE TABLE `catalog_product_option_type_title`;
TRUNCATE TABLE `catalog_product_option_type_value`;
TRUNCATE TABLE `catalog_product_super_attribute_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_product_relation`;
TRUNCATE TABLE `catalog_category_product_index`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;
TRUNCATE TABLE `cataloginventory_stock_status_idx`;
TRUNCATE TABLE `cataloginventory_stock`;
TRUNCATE TABLE `core_url_rewrite`;
INSERT  INTO `catalog_product_link_type`(`link_type_id`,`code`) VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
INSERT  INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`) VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
INSERT  INTO `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');
TRUNCATE TABLE `catalog_product_entity`;
SET FOREIGN_KEY_CHECKS = 1;
1 голос
/ 04 сентября 2013

работал как шарм

Php myadmin - выберите SWL базы данных (magento) вверху, а затем вставьте следующее:

DELETE FROM `catalog_product_entity`
0 голосов
/ 17 февраля 2016

Самое чистое решение, на мой взгляд, таково:

  • Перейдите на System -> Index Management и установите все индексы в режим индекса "Обновление вручную"
  • Перейдите на Catalog -> Manage Products, выберитевсех продуктов и используйте действие Delete для удаления всех продуктов.

Это не так быстро, как удаление продуктов из базы данных вручную, но, вероятно, это самый быстрый правильный способ удаления всех продуктов, на которые вы надеваетене нужно беспокоиться о потерянных записях в базе данных или конфликтах внешних ключей.

0 голосов
/ 25 ноября 2013
SELECT * FROM `mage_catalog_product_entity`

дает список продуктов, которые в данный момент активны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...