Добавить и удалить товар из корзины во время создания заказа!

Всем привет, проблема такая, подскажите кто могет быть в курсе, добавляю товар в корзину так

$itemId = $cart->addItem(array(
    'product_id' => $productId,
    'quantity' => 1,
    'type' => 'product',
    'sku_id' => $productIdSku,
));

но потом при оформлении создания заказа пишет ошибку, причем ном '22841' это id товара в корзине, не товара, а id item, дак вот он там один, но почему то ругается на дупликат.

Query Error 1062: Duplicate entry '22841' for key 'PRIMARY'

заказа создаю кодом, order массив в котором как раз items.

$workflow->getActionById('create')->run($order)

2 ответа

  • 1
    Koin 23 ноября 2018 09:46 #

    Переделал на хук order creation, после создания заказа меняю в базе, уведомления приходят уже с измененными товарами, покатит)

  • 1
    enso_studio@mail.ru 23 ноября 2018 10:14 #

    Нужно проверять есть ли товар в корзине

    /**
     * @param int $sku_id
     * @param shopCart $cart
     * @return array|false
     */
    private function skuInCart($sku_id, shopCart $cart)
    {
        foreach ($cart->items() as $item)
        {
            if ($item['sku_id'] == $sku_id) {
                return $item;
            }
        }
        return false;
    }
    // добавить или обновить артикул в корзине
    if ($item = $this->skuInCart($sku['id'], $cart)) {
        $cart->setQuantity($item['id'], $item['quantity'] + $quantity);
    } else {
        $cart->addItem(array(
            'create_datetime' => date('Y-m-d H:i:s'),
            'product_id' => $sku['product_id'],
            'sku_id' => $sku['id'],
            'quantity' => $quantity,
            'type' => 'product',
        ));
    };

    • +1
      Koin Koin 23 ноября 2018 10:23 #

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

Добавить ответ

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