@ Ответ на omouse указал нам API Magento на цены уровня. [Updated Link for Magento 1.X's Tier Price API] Примечание. Я работаю с Magento 1.9.2.2.
Осмотрев наиболее эффективный способ обновления цен на уровне продукта (без использования прямого SQL), я нашел, что API является самым быстрым способом. Это по-прежнему медленно, но это лучше, чем другие методы, которые я нашел, который рекомендованные делать что-то вроде:
// Works, but is slow
$product = Mage::getModel('catalog/product')->load($productId);
$product->unsTierPrice();
$product->save();
$product->load();
$product->setTierPrice($tiers);
$product->save();
Лучше, я сделал свой массив уровня массивов в массив объектов уровня, и использовать функции API для обновления продукт:
// Build the array of tier level objects
foreach ($tierLevels as $tierLevel) {
$tiers[] = (object) array(
'website' => 'all',
'customer_group_id' => 'all',
'qty' => $tierLevel['min_qty'],
'price' => $tierLevel['unit_price']
);
}
// Use the API to do the update
try {
$tierPriceApi = Mage::getSingleton('catalog/product_attribute_tierprice_api_v2');
$tierPriceApi->update($productId, $tiers);
}
catch (Exception $e) {
// Handle the exception
}
Весь смысл magento - НЕ использовать прямые SQL-запросы. – Qix