Я работаю над сценарием, который будет создавать или обновлять продукты в моем каталоге.
Этот сценарий отлично работает, когда необходимо создать продукт, но не работает, когда продукт уже существует в базе данных, дающей мне (многиераз) следующие сообщения:
2011-09-30T08: 00: 53 + 00: 00 ERR (3): исправимая ошибка: аргумент 3 передан в Mage_Catalog_Model_Resource_Eav_Mysql4_Abstract :: _ canUpdateAttribute () должен быть массивом, задано нулевое значение, вызвано ...
2011-09-30T08: 00: 53 + 00: 00 ERR (3): исправимая ошибка: аргумент 3, переданный в Mage_Eav_Model_Entity_Abstract :: _ canUpdateAttribute (), должен быть массивом, заданным нулевым значением, вызванный в ...
2011-09-30T08: 00: 53 + 00: 00 ERR (3): Предупреждение: array_key_exists () [function.array-key-существующие]: второй аргумент должен быть либо массивомили объект в ...
Я искал метод, указанный в сообщении, но не могу найти причину сбоя сценария.
Сначала сценарий пытаетсязагрузить продукт, используя:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
, а затем проверьте, был ли продукт извлечен с использованием простого if(!$product) { //creation }
.
Весь код, следующий за оператором if, используется совместно для создания или обновления и состоит из установочных вызовов объекта продукта.
Вот код, который я использую:
$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();
Возможно, кто-то уже сталкивался с той же проблемой.
Любая помощь приветствуется!Спасибо.