У меня есть продукты, загруженные в Magento, которые я пытаюсь массово обновить в инвентаре.Я создал все продукты, используя Mage_Catalog_Model_Product, и установил для них количество, используя setStockData, например:
$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 работает ... 13 000+ раз.
Теперь, когда ясказал, что я пытаюсь обновить инвентарь по продуктам, которые я создал, используя вариант того, что я сделал для создания продуктов ... вариант, который я вижу здесь и практически идентично в других местах в Интернете.
Моя проблема в том, что я могу использовать вариант кода по ссылке выше и получить действительный объект продукта, но когда я вызываю 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)
(Я также попытался получить продукт без изменений в коде по ссылке выше и получил те же результаты, что и ожидал.)
$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.Может ли кто-нибудь помочь мне понять, что я могу делать неправильно?