Я работаю над script, который будет создавать или обновлять продукты в моем каталоге.
script отлично работает, когда продукт необходимо создать, но он не работает, когда продукт уже существует в базе данных, что дает мне (много раз) следующие сообщения:
2011-09-30T08: 00: 53 + 00: 00 ERR (3): восстанавливаемая ошибка: аргумент 3 перешел на Mage_Catalog_Model_Resource_Eav_Mysql4_Abstract:: _ canUpdateAttribute() должен быть массив, null данный, вызываемый в...
2011-09-30T08: 00: 53 + 00: 00 ERR (3): восстанавливаемая ошибка: аргумент 3 передан Mage_Eav_Model_Entity_Abstract:: _ canUpdateAttribute() должен быть массив, null заданный, вызываемый... 2011-09-30T08: 00: 53 + 00: 00 ERR (3): Предупреждение: array_key_exists() [function.array-key-exists]: второй аргумент должен быть либо массивом, либо объектом в...
Я смотрел метод, указанный в сообщении, но я не могу найти причину, по которой сбой script.
script сначала попробуйте загрузить продукт, используя:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
а затем проверьте, был ли продукт извлечен с помощью простого if(!$product) { //creation }
.
Весь код, который следует за оператором if, используется совместно для создания или обновления и состоит из вызовов setter для объекта продукта.
Вот код, который я использую:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
if(!$product) {
// the product doesn't exist yet
$product = new Mage_Catalog_Model_Product();
$product->setSku($sku);
$product->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE);
$product->setCreatedAt(strtotime('now'));
}
// setters calls
$product->setTeinte(trim((string)$record->web_teinte));
// ...
// finally save the product
$product->save();
Возможно, кто-то уже столкнулся с той же проблемой.
Любая помощь приветствуется! Спасибо.