2015-01-23 5 views
0

Я использую Magento 1.5 и пытаюсь обновить уровень запасов продукта программно с использованием моделей Magento, как это: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"; 
} 

Когда этот код исполняю, я получаю следующее сообщение об ошибке:

Недействительного аргумент для Еогеаспа() в приложении \ \ кода ядре \ Mage \ Eav \ Model \ Entity \ Abstract.php на линии 1068

Любой идея, почему это может быть ?

P.S. manage stock опция включена для этого продукта. Я пытаюсь проверить.

ответ

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

} 

Имейте в виду, это довольно ресурсоемкими, поэтому, если вы планируете запустить его на более десятка продуктов, в то время, вы можете что-то более оптимизирован.

+0

Теперь я получаю другую ошибку: 'PDO :: quote() ожидает, что параметр 1 будет строкой, объект указан в lib \ Zend \ Db \ Adapter \ Pdo \ Abstract.php в строке 296'. – Latheesan

Смежные вопросы