我正在使用来自外部服务器的 json 请求来更新 Magento 中的产品等(请不要问我们为什么不只使用 api 的 ...),我现在正在尝试更新属性信息和它资源摘要中的 _uniqueCheck() 方法似乎失败了。问题是我不知道如何解决它。以下代码
$attribute_model = Mage::getModel('eav/entity_attribute');
$attributeId = $attribute_model->getIdByCode('catalog_product', $attribute_code);
$attribute = $attribute_model->load($attributeId);
$attribute->setData($data)->save();
导致以下错误:
[29-May-2013 16:32:00 UTC] PHP Fatal error: Uncaught exception 'Mage_Core_Exception' with message 'Attribute with the same code already exists.' in .../app/Mage.php:594
Stack trace:
#0 .../app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(676): Mage::throwException('Attribute with ...')
#1 .../app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(424): Mage_Core_Model_Resource_Db_Abstract->_checkUnique(Object(Mage_Eav_Model_Entity_Attribute))
#2 .../app/code/core/Mage/Core/Model/Abstract.php(318): Mage_Core_Model_Resource_Db_Abstract->save(Object(Mage_Eav_Model_Entity_Attribute))
#3 .../app/code/local/Valoran/Import/Model/Attribute.php(25): Mage_Core_Model_Abstract->save()
#4 .../app/code/local/Valoran/Harmony/Model/Messaging/Attributeset.php(115): Valoran_Import_Model_Attribute->_create(Array)
#5 .../app/code/local/Valoran/Harmony/Model/Messaging/Attributeset.php(23): Valoran_Harmony_Model_Messaging_Attribut in .../app/Mage.php on line 594
这让我很沮丧,因为我知道所有准备好的代码都存在,我正在尝试进行更新,这就是我调用 ->load($id) ... 的原因。
有人对我在这里缺少的东西有任何想法吗?我现在正在探索使用 Mage_Eav_Model_Entity_Setup::updateAttribute 方法来完成此操作,但到目前为止我遇到了同样的错误。