就像在其他答案中建议的那样,可以Mage_CatalogInventory_Model_Stock_Item直接使用该类。但是人们必须通过调用正确引用产品,setProduct以拥有适用于新库存和现有库存的工作代码。
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId());
$stockItem->setProduct($product)
    ->setData('stock_id', Mage_CatalogInventory_Model_Stock::DEFAULT_STOCK_ID)
    ->setData('qty', 1)
    ->setData('is_in_stock', 1)
    ->setData('manage_stock', 1)
    ->setData('use_config_manage_stock', 0)
    ->setData('use_config_backorders', 0)
    ->setData('backorders', 0)
    ->setData('use_config_max_sale_qty', 0)
    ->setData('max_sale_qty', 1)                
    ->save();
替代解决方案
但是,如果您$product->save仍然致电,我将通过$product->setStockdata($array)如下方式设置库存数据。这样,Magento可以从库存数据中创建正确的库存项目。最大的优点是库存项目更新与发生在同一事务中$product->save()。这对于数据一致性很重要。
$stockData = array();
$stockData['qty'] = 1;
$stockData['is_in_stock'] = 1;
$stockData['manage_stock'] = 1;
$stockData['use_config_manage_stock'] = 0;
$stockData['use_config_backorders'] = 0;
$stockData['backorders'] = 0;
$stockData['use_config_max_sale_qty'] = 0;
$stockData['max_sale_qty'] = 1;
$product->setStockData($stockData);
//...
$product->save()