php - 无法在 Magento 1.6.2 中更新产品的库存项目数量

标签 php magento magento-1.6

我正在尝试从脚本中更新 Magento 中产品的库存数量。

我加载产品,设置库存数量,然后保存 - 但数量保持不变。

// get stock data
$stockData = $product->getStockItem();
printf(PHP_EOL.'Stock: qty=%d, instock=%s, man_stock=%s, use_cfg_man_stock=%s'.PHP_EOL,
    $stockData->getData('qty'),
    $stockData->getData('is_in_stock'),
    $stockData->getData('manage_stock'),
    $stockData->getData('use_config_manage_stock')
);
// prints out qty=0, instock=, man_stock=, use_cfg_man_stock=


// $stockQty = 1
$product->stockItem->setData('qty', $stockQty);
$product->stockItem->setData('is_in_stock', $stockQty>0 ? 1 : 0);
$product->stockItem->setData('manage_stock', 1);
$product->stockItem->setData('use_config_manage_stock', 0);

$product->save();                           
$product->load();                           
$stockData = $product->getStockItem();
printf('New Stock: qty=%d, instock=%s, man_stock=%s, use_cfg_man_stock=%s'.PHP_EOL,
    $stockData->getData('qty'),
    $stockData->getData('is_in_stock'),
    $stockData->getData('manage_stock'),
    $stockData->getData('use_config_manage_stock')
);
// prints out qty=0, instock=, man_stock=, use_cfg_man_stock=

我哪里错了?

最佳答案

您所缺少的只是保存 $stockItem。您不需要创建新的 stock_item,也不必保存产品。

if (!($stockItem = $product->getStockItem())) {
    $stockItem = Mage::getModel('cataloginventory/stock_item');
    $stockItem->assignProduct($product)
              ->setData('stock_id', 1)
              ->setData('store_id', 1);
}
$stockItem->setData('qty', $stockQty)
          ->setData('is_in_stock', $stockQty > 0 ? 1 : 0)
          ->setData('manage_stock', 1)
          ->setData('use_config_manage_stock', 0)
          ->save();

关于php - 无法在 Magento 1.6.2 中更新产品的库存项目数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11139516/

相关文章:

magento - 在 magento 下订单时通过电子邮件通知管理员

mysql - magento 上的 mysql 连接太多?

magento - 以编程方式创建 Magento 产品

magento-1.6 - Magento 在产品 View 页面上显示类别内的所有产品

缺货时的 Magento 捆绑产品价格

php - preg_match 到 domain.tld

android - SOAPEngine 的completeWithDictionary 为空

database - Magento 重置一个模块数据库

php - 允许使用@进行错误抑制的功能

php - PDO 无法返回last_insert_id