我有装入Magento的产品,我试图批量更新库存量。我创建的所有使用Mage_Catalog_Model_Product的产品和使用setStockData像设置数量上他们:Magento 1.5.1.0 - 在尝试更新产品的库存数量时,getStockData返回NULL
$product = new Mage_Catalog_Model_Product();
$product->setTypeId('simple');
$product->setStatus(1);
$product->setSku($sku);
$product->setStockData(array(
'is_in_stock' => 1,
'qty' => $record['stockstatus'],
'manage_stock' => 0,
));
...
所以我见过setStockData工作... 13000次。
现在,正如我所说的,我试图更新我创建的产品上的库存,使用我创建产品时所做的一个变体......一个变体,我看到here和几乎相同的网络上其他地方。
我的问题是,我可以在上面的链接使用代码的变化,并得到有效的产品对象,但是当我打电话getStockData的对象,它返回NULL:
$product = Mage::getModel('catalog/product')
->loadByAttribute('product_code', '678910');
var_dump($product->getName()); // returns 'Hello My Name is Product'
var_dump($product->getProductCode()); // returns '678910'
var_dump($product->getSku()); // returns 'SKU1234'
var_dump($product->getStockData()); // returns NULL (and there is a qty of 52 set)
(I”以前也尝试过让对代码没有变化的产品在上面的链接和我的预期有同样的效果。)
$product_id = Mage::getModel('catalog/product')->getIdBySku('SKU1234');
$product = Mage::getModel('catalog/product');
$product->load($product_id);
$stockData = $product->getStockData();
var_dump($product->getName()); // returns 'Hello My Name is Product'
var_dump($product->getProductCode()); // returns '678910'
var_dump($product->getSku()); // returns 'SKU1234'
var_dump($product->getStockData()); // returns NULL (and there is a qty of 52 set)
所以,如果我不能getStockData获取股票数据,我可以不设置股票数据:
$product = Mage::getModel('catalog/product')
->loadByAttribute('product_code', $record['productcode']);
$stockData = $product->getStockData();
$stockData['qty'] = $record['stockstatus'];
$stockData['is_in_stock'] = ($record['stockstatus'] > 0) ? 1 : 0;
$product->setStockData($stockData);
$product->save();
有什么我失踪了吗?我不明白为什么getStockData返回NULL。有人能帮助我理解我可能做错了什么吗?
是的,我也用它来获取产品详细信息页上的产品数量。不幸的是,这不是我在这里想要做的。我需要获得stockData数组,以便我可以修改它并将其保存回更新的产品。 – demarts
那么为什么不使用上面的代码没有'getQty()'? '法师:: getModel('cataloginventory/stock_item') - > loadByProduct($ product-> getId())'应该做的伎俩! –