Ошибка при добавлении товара в корзину - PullRequest
1 голос
/ 11 июня 2019

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

$cart = Mage::getSingleton('checkout/cart');
$cart->init();
$paramater = array(
            'product' => $product->getId(),
            'related_product' => null,
            'qty' => 1,
            'form_key' => Mage::getSingleton('core/session')->getFormKey()
        );
$request = new Varien_Object();
$request->setData($paramater);
$cart->addProduct($product, $request);
$cart->save();

Этот код работает нормально после входа в систему. но перед входом в систему я получаю следующую ошибку.

a: 5: {i: 0; s: 640: "SQLSTATE [23000]: нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ошибка ограничения внешнего ключа (db_magento_nua. sales_flat_quote_item, CONSTRAINT FK_SALES_FLAT_QUOTE_ITEM_QUOTE_ID_SALES_FLAT_QUOTE_ENTITY_ID ИНОСТРАННЫЙ КЛЮЧ (quote_id) ССЫЛКИ sales_flat_quote (entity_id) В УДАЛЕНИИ), запрос был: INSERT INTO sales_flat_quote_item (created_at, updated_at, product_id, store_id, is_virtual, sku, name, is_qty_decimal, weight, qty, custom_price, product_type, original_custom_price, base_cost) ЗНАЧЕНИЯ ('2019-06-11 12:17: 58 ',' 2019-06-11 12:17:58 ',?,?,?,?,?,?,?,?,?,?,?,?) "; I: 1; s: 2586: "# 0 /var/www/html/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo -> _ execute (Array)

Может кто-нибудь помочь мне решить проблему. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Я нашел решение для этого.Так как цитата отсутствует, я не могу добавить товар.Мне просто нужно инициировать цитаты, прежде чем добавлять продукт в корзину.Я использую приведенный ниже код для добавления продукта сейчас.

 $cart = Mage::getSingleton('checkout/cart');
 $cart->init();
 $quote = $cart->getQuote();
 $paramater = array(
    'product' => $product->getId(),
    'qty' => 1,
    'form_key' => Mage::getSingleton('core/session')->getFormKey()
 ); 
 $request = new Varien_Object();
 $request->setData($paramater);
 $quote->addProduct($product, $request);
 $quote->save();
 $cart->save();

Над кодом работает как ожидалось.

1 голос
/ 11 июня 2019

Попробуйте использовать Mage::getModel()

$cart = Mage::getModel('checkout/cart');
$cart->init();
$paramater = array(
                'product' => $product->getId(),
                'related_product' => null,
                'qty' => 1,
                'form_key' => Mage::getSingleton('core/session')->getFormKey()
            );
$request = new Varien_Object();
$request->setData($paramater);
$cart->addProduct($product, $request);
$cart->save();
...