Ошибка при исключении всех товаров из категории Принято

1

Добрый день.

При исключении всех товаров из категории обнаружена следующая ошибка

в файле shopProductsDeleteFromCategory.controller.php

исполняется следующий код

$collection = new shopProductsCollection($hash);
        $offset = 0;
        $count = 100;
        $total_count = $collection->count();

        $all_updated_products = [];
        while ($offset < $total_count) {
            $product_ids = array_keys($collection->getProducts(&#039;*&#039;, $offset, $count));
            $model->deleteProducts($category_id, $product_ids);
            $all_updated_products += $product_ids;
            $offset += count($product_ids);
            if (!$product_ids) {
                break;
            }
        }

Из за того что продукты удаляются сразу в цикле и далее $offset прибавляется на количество полученных товаров, к середине списка товаров получается что $offset превышает оставшееся количество товаров.

Пример: Поставили на удаление из категории 1200 товаров.
Когда удалили уже 600 то в строке 

$product_ids = array_keys($collection->getProducts(&#039;*&#039;, $offset, $count));

мы получим значение $offset = 600 , но товаров уже осталось 600 поэтому $product_ids вернется 0

Решение:
Просто вариант. Всегда $collection->getProducts в место переменной $offset передавать 0
Либо выносить удаление за цикл, предварительно собрав id но не вижу смысла так делать

0 комментариев

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите