通过模型更新Magento库存 - 错误:为foreach()提供的参数无效

时间:2015-01-23 10:48:24

标签: php magento

我正在使用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";
}

执行此代码时,出现以下错误:

在第1068行的app \ code \ core \ Mage \ Eav \ Model \ Entity \ Abstract.php中为foreach()提供的参数无效

知道为什么会这样吗?

P.S。我试图测试此产品的manage stock选项已启用。

1 个答案:

答案 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();

}

请注意,这是非常耗费资源的,因此如果您计划一次在十几个产品上运行它,您可能需要更优化的内容。