Помощь Удаление товаров (более 10000)

Тема в разделе "PrestaShop", создана пользователем kunizza, 14 апр 2019.

Информация :
Приветствую гость, обрати внимание! Темы которые закреплены в разделах, в скором времени будут откреплены. Правила раздела PrestaShop

(Не актуальные темы) Каталоги:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
(Не актуальные темы) Поиск / Запросы:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
Полезная информация:Поддержка и помощь c PrestaShopУбираем ПрестаТраст, стучалки и прочую рекламуСовместные покупки модулей и шаблоновПеревод Prestashop и модулей
Модераторы: trace
  1. kunizza

    kunizza Постоялец

    Регистр.:
    20 май 2014
    Сообщения:
    62
    Симпатии:
    20
    Добрый день. Вот столкнулся с такой задачей: нужно удалить 10000 товаров. Вводный данные.
    Есть диапазон ID от 1 до 15000. Среди этого диапазона есть активные товары, их трогать нельзя. Необходимо удалить только неактивные.
    Поскольку готовых решений я не нашел, появилась мысль попробовать написать скрипт.
    Код:
    <?php
    require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.inc.php');
    include(dirname(__FILE__) . '/init.php');
    
    $res = Db::getInstance()->executeS('SELECT `id_product` FROM `'._DB_PREFIX_.'product` WHERE (`id_product` BETWEEN 1 AND 15000) AND `active` = 0 ORDER BY `id_product` DESC LIMIT 100 ');
    
    echo "<p>(".date('Y/m/d H:i:s').")Удаляем товары ...</p>";
    if ($res) {
        foreach ($res as $row) {
            echo "<p>(".date('Y/m/d H:i:s').") Удаляем товар с ID <b>".$row['id_product']."</b>...";
            $p = new Product($row['id_product']);
            if(!$p->delete()) {
                echo " <span style='color: red'>Не вышло удалить товар!</span></p>";
            } else {
                echo " <span style='color: green'>Удалено!</span></p>";
            }
        }
    }
    ?>
    
    <script>
    window.location.reload();
    </script>
    Какие проблемы могут возникнуть при использовании такого метода? Что я не учел?

    ЗЫ. Если кто знает другие методы решения данной проблемы - буду крайне благодарен.
     
  2. sergiykhd

    sergiykhd Sergiy

    Регистр.:
    17 апр 2013
    Сообщения:
    1.130
    Симпатии:
    849
    в модуле clener есть функция удаления всех товаров, можно там глянуть как реализовано и подкорректировать под свои нужды
     
    _sashok нравится это.
  3. zen1

    zen1

    Регистр.:
    6 дек 2016
    Сообщения:
    895
    Симпатии:
    1.693
    In the cleaning module this option she is irreversible you will not be able to recover products and categories ...?
     
    Последнее редактирование: 14 апр 2019
  4. Belena27089

    Belena27089

    Регистр.:
    16 авг 2016
    Сообщения:
    457
    Симпатии:
    346
    а в каталоге по неактивным отсортировать и удалить?
     
  5. kunizza

    kunizza Постоялец

    Регистр.:
    20 май 2014
    Сообщения:
    62
    Симпатии:
    20
    В этом то и суть, что не все неактивные товары нужно удалить. Пока самый простой спасоб который я придумал - актуализировать товары в прайс csv и удалить через импорт ("удалять товары которых нет в сsv" параметр) в Store Manager. Однако, очень хотелось бы обойтись без Store Manager.
     
  6. genokby

    genokby Постоялец

    Регистр.:
    15 янв 2013
    Сообщения:
    110
    Симпатии:
    63
    может проще написать sql-запрос и удалить сразу из базы
     
  7. soberman2

    soberman2 Создатель

    Регистр.:
    25 апр 2015
    Сообщения:
    42
    Симпатии:
    9
    Может через пресловутый Storemanager? отсортировать по активности и удалить все , что ниже?
     
  8. aliensun

    aliensun Создатель

    Регистр.:
    25 янв 2014
    Сообщения:
    47
    Симпатии:
    30
    Через запрос в DB
    DELETE FROM ps_product WHERE active = 0
     
  9. silenty

    silenty

    Регистр.:
    19 дек 2008
    Сообщения:
    369
    Симпатии:
    451
    Слишком много связей в таблицах. Продукты, категории, заказы... Это не совсем верный результат. + останутся все картинки, что будет занимать место на диске.
     
    zen1 и _sashok нравится это.