我正在使用Magento 1.5并尝试使用像这样的magento模型以编程方式更新产品的库存水平:
// Dummy data
$sku = "VCF001";
$qty = 12;
// Check If Product Is Already In Magento
$p_id = Mage::getModel('catalog/product')->getIdBySku($sku);
if ($p_id)
{
// Update Stock In Magento
$p = Mage::getModel('catalog/product')->load($p_id);
$p->setStockData(array(
'is_in_stock' => ($qty > 0 ? 1 : 0),
'qty' => $qty
));
$p->save();
// Success
echo "Done";
}
else
{
// Error
echo "Invalid Sku";
}
执行此代码时,出现以下错误:
知道为什么会这样吗?
P.S。我试图测试此产品的manage stock
选项已启用。
答案 0 :(得分:0)
尝试以下操作,它应该有效:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
if($product) {
$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);
$stock->setData(array(
'is_in_stock' => ($qty > 0 ? 1 : 0),
'qty' => $qty
));
$stock->save();
}
请注意,这是非常耗费资源的,因此如果您计划一次在十几个产品上运行它,您可能需要更优化的内容。