У меня есть продукты, загруженные в 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 работает ... более 13000 раз.
Теперь, как я сказал, я пытаюсь обновить инвентаризация продуктов, которые я создал, используя вариант того, что я сделал для создания продуктов ... вариант, который я вижу здесь и практически идентичный в другом месте в Интернете.
Моя проблема в том, что я могу использовать вариант кода по ссылке выше и получить действительный объект продукта, но когда я вызываю 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. Может ли кто-нибудь помочь мне понять, что я делаю неправильно?