在对单个项目进行修改后重新索引单个项目的正确方法是什么。
示例上下文:
我们公司依赖名为 Stone Edge 的第三方库存管理平台。我们还在多个店面销售商品,包括 Magento、亚马逊、Ebay 和 Buy.com
每 10 分钟一次,Stone Edge 将从站点下载所有订单,然后将库存调整发送回我们的 Magento 商店。这是通过向存储在我们的网络服务器上的 php 脚本发送一个简单的 http 请求来完成的,其中包含自上次更新以来库存更改的库存中每个项目的键值对数组。
在这些中的每一个上完成保存功能后,然后重新索引该项目,以免在更新时间和下一次站点范围重新索引之间反映 0 库存。
我在 Magento 论坛上找到了有关如何重新索引该项目的讨论:
$item->setForceReindexRequired(true);
Mage::getSingleton('index/indexer')->processEntityAction($item,Mage_CatalogInventory_Model_Stock_Item::ENTITY,Mage_Index_Model_Event::TYPE_SAVE);
在这组说明之前,您会看到类似
$item = Mage::getModel('cataloginventory/stock_item')->loadByProduct($entityid);
$item->addQty($change);
$item->save();
但是,完成此操作后,问题变得明显。项目本身被重新索引,但如果它们是分组产品的成员,则不会更新组产品。
我需要解决一个明显的问题。解决这个问题的最佳方法是什么?
如果我碰巧想出一个答案,我会发布一个答案。