我写了一个扩展来计算产品销量——目标是获得畅销书。
我为所有产品创建了一个新的静态属性(意味着:我在 catalog_product_entity 表中添加了一个列)items_sold
我参与了sales_order_save_before
活动
public function salesOrderSaveBefore(Varien_Event_Observer $observer)
{
/* @var $order Mage_Sales_Model_Order */
$order = $observer->getOrder();
// if the order will be created and has no id yet
if(!$order->getId()) {
$productIds = array();
foreach($order->getAllItems() as $item) {
/* @var $item Mage_Sales_Model_Order_Item */
$productIds[] = $item->getProductId();
}
}
// what to do here :-)
}
现在我看到了两种方法:
- 我加载产品集合,遍历所有产品,提高 items_sold (+1) 并保存所有产品
- 我发出一个像这样的查询
UPDATE catalog_product_entity SET items_sold = items_sold + 1 WHERE entity_id IN $productIds
有什么建议么?