Может кто-нибудь помочь, пожалуйста?
В Magento 1.5.0.1 я пытаюсь сохранить значение атрибута для конфигурируемого продукта.Я добавил свой атрибут в соответствующие продукты, используя Admin.
Я посмотрел на Автоматически изменить атрибут с помощью magento и Программно изменить атрибут продукта на уровне представления магазина , поэтому смог придумать, казалось бы, простой код, который работает, к сожалениютолько иногда - а именно для конфигурируемых продуктов без ценовых уровней ...
Вот фрагмент кода:
$id = 126; # id of existing product
$product = Mage::getModel('catalog/product')->load($id);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$product->setx_pos(123);
// tried this too, does not make a difference: $product->setData('x_pos', 123);
$product->save();
Он работает отлично, если конфигурируемый продукт не имеет продуктов с ценовыми уровнями.Он может иметь многоуровневые продукты без многоуровневых цен, в этом случае сохранить работает.Если у продуктов уровня есть цены уровня - тогда я получаю исключение:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '126-1-0-5.0000-0' for key 'UNQ_CATALOG_PRODUCT_TIER_PRICE'
Trace:
#0 C:\magento\app\code\core\Mage\Eav\Model\Entity\Abstract.php(1513): Mage_Eav_Model_Entity_Abstract->walkAttributes('backend/afterSa...', Array)
#1 C:\magento\app\code\core\Mage\Catalog\Model\Resource\Eav\Mysql4\Product.php(142): Mage_Eav_Model_Entity_Abstract->_afterSave(Object(Mage_Catalog_Model_Product))
#2 C:\magento\app\code\core\Mage\Eav\Model\Entity\Abstract.php(1013): Mage_Catalog_Model_Resource_Eav_Mysql4_Product->_afterSave(Object (Mage_Catalog_Model_Product))
#3 C:\magento\app\code\core\Mage\Core\Model\Abstract.php(318): Mage_Eav_Model_Entity_Abstract->save(Object(Mage_Catalog_Model_Product))
#4 C:\magento\app\design\frontend\default\OneOffFit\template\page\data.phtml(90): Mage_Core_Model_Abstract->save()
Я погуглил на этой ошибке - единственный ответ - оставшийся без ответа вопрос.
Почему Magento обновляет цены уровня в этомдело?Я делаю что-то не так?Стоит ли сначала обновлять связанные продукты (они имеют такой же атрибут, но с ненулевым значением)?Или, скорее, что я должен делать правильно?Кто-нибудь может помочь, пожалуйста?