Я добавил пользовательский атрибут eav в свою сущность продукта приложения Magento, используя скрипт установщика (в основном, следуя процедуре, описанной здесь: Установка пользовательских атрибутов с вашим модулем ). Теперь я хочу использовать скрипт обновления для изменения (заполнения) значений этого атрибута для каждого продукта в соответствии с некоторыми критериями (в зависимости от категории продукта). Сценарий, который я пытался использовать, по сути был таким:
$attributeValues = array(...) // Map from $productId to the desired $value
$product = Mage::getModel('catalog/product');
foreach($attributeValues as $productId=>$value){
$product->load($productId)->setMyAttribute($value);
$product->save();
}
Тогда у меня возникнут вопросы: можно ли использовать этот уровень абстракции (Mage :: getModel ('catalog / product') и его методы) в сценариях обновления? Если это не так, как бы вы порекомендовали изменить эти значения атрибутов с помощью сценариев обновления (не требуя sql)?
Сценарий, который я использовал (до сих пор), не работал и завершился ошибкой:
Call to a member function getStoreIds() on a non-object
в файле magento core.
Я не знаю, является ли эта ошибка ошибкой в Magento или связана с тем, как я использую сценарии обновления.
Я использую Magento 1.4.0.1