当我尝试从具有分级定价的 Magento Enterprise 1.8 脚本中保存产品模型时,我发现了一些奇怪的行为。
以这段代码为例:
// This product has a tier price
$product = Mage::getModel('catalog/product')->load(194760);
$product->setName('Changed Product Title');
$product->save();
保存时获取异常(详情如下)。但是,如果我不更改模型中的任何内容,则不会出现异常。我有一种感觉,这是因为我没有更新任何东西,所以 Magento 没有做太多的工作。
// Same product, but I changed nothing and it works
$product = Mage::getModel('catalog/product')->load(194760);
$product->save();
奇怪的是,如果我正在设置或修改等级价格信息,我能够成功保存产品(等待我不创建任何重复的东西)
// 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();
我看到的异常如下:
致命错误:未捕获的异常“Mage_Eav_Model_Entity_Attribute_Exception”和消息“SQLSTATE [23000]:完整性约束违规:1062 /path/to/magento/app/ 中键“UNQ_CATALOG_PRODUCT_TIER_PRICE”的重复条目“194760-1-0-5.0000-0”代码/核心/法师/Eav/模型/实体/Abstract.php:61
因此,当产品中存在等级价格时,如果您尝试更改模型中的任何内容,它将尝试重新插入所有等级价格信息。
有没有人见过这个?有没有办法解决这个问题?感谢您的任何帮助,您可以提供。