以编程方式更新Magento中的产品价格 - 为foreach()提供的参数无效

Lat*_*san 4 php magento

我试图在自定义模块中以编程方式更新产品的价格.这是我的代码:

Mage::setIsDeveloperMode(true); // for debug only
try
{
    $product = Mage::getModel('catalog/product')->load($productId);
    $product->setPrice($newPrice);
    $product->save();
}
catch (Exception $ex)
{
    echo "Error: ". $ex->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

执行此代码时,我得到以下异常:

警告:在第1180行的/home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php中为foreach()提供的参数无效

system.log文件中,我看到分配这些条目:

2016-03-17T18:01:06 + 00:00 ERR(3):警告:在/ home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity中为foreach()提供的参数无效第1180行/Abstract.php 2016-03-17T18:01:06 + 00:00 ERR(3):可恢复错误:传递给Mage_Catalog_Model_Resource_Abstract :: _ canUpdateAttribute()的参数3必须是数组类型,给定null,调用/home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php在1225行并在/ home/www-data/public_html/app/code/core/Mage/Catalog中定义第543行/Model/Resource/Abstract.php 2016-03-17T18:01:06 + 00:00 ERR(3):可恢复错误:传递给Mage_Eav_Model_Entity_Abstract的参数3 :: _ canUpdateAttribute()必须是数组类型,null给出,在第545行的/home/www-data/public_html/app/code/core/Mage/Catalog/Model/Resource/Abstract.php中调用,并在/ home/www-data/public_html/app/code/core中定义第1254行的/Mage/Eav/Model/Entity/Abstract.php 2016-03-17T18:01:06 + 00:00 ERR(3):警告:array_key_exists()exp 将参数2作为数组,在第1256行的/home/www-data/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php中给出null

知道可能导致这种情况的原因吗?我的开发magento设置上的相同代码有效,但在生产magento中,此错误开始出现,所以我有点困惑.

Ism*_*cco 20

您可以尝试设置商店:

法师::应用程序() - > setCurrentStore(Mage_Core_Model_App :: ADMIN_STORE_ID);