当我尝试从具有层级定价的Magento Enterprise 1.8脚本中保存产品模型时,我发现了一些奇怪的行为.
以此代码为例:
// This product has a tier price
$product = Mage::getModel('catalog/product')->load(194760);
$product->setName('Changed Product Title');
$product->save();
Run Code Online (Sandbox Code Playgroud)
保存获取异常时(详见下文).但是,如果我在模型中没有任何改变,我就不会得到例外.我有一种感觉,这是因为我没有更新任何东西,所以Magento没有那么多工作.
// Same product, but I changed nothing and it works
$product = Mage::getModel('catalog/product')->load(194760);
$product->save();
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我正在设置或修改等级价格信息,我能够成功保存产品(等待我不创建任何重复的内容)
// This works pending the tier price does not already exist
$mud_array = array();
$mud_array[] = array(
'website_id' => 0,
'cust_group' => 32000,
'price_qty' => 5,
'price' => 6
);
$product = Mage::getModel('catalog/product')->load(194760);
$product->setTierPrice($mud_array);
$product->save();
Run Code Online (Sandbox Code Playgroud)
我看到的例外情况如下:
致命错误:未捕获异常'Mage_Eav_Model_Entity_Attribute_Exception',消息'SQLSTATE [23000]:完整性约束违规:1062重复条目'194760-1-0-5.0000-0',用于/ path/to/magento/app /中的关键字"UNQ_CATALOG_PRODUCT_TIER_PRICE"代码/核心/法师/ EAV /型号/实体/ Abstract.php:61
因此,当产品中存在等级价格并且您尝试更改模型内的任何内容时,它似乎会尝试重新插入所有等级价格信息.
谁看过这个吗?有办法解决这个问题吗?感谢您的任何帮助,您可以提供.
我在EE 1.12中遇到了同样的问题,但是使用了"group_price"属性.只是通过在我的脚本的乞讨添加来设法修复错误
法师::应用程序() - > setCurrentStore(Mage_Core_Model_App :: ADMIN_STORE_ID);