【发布时间】:2012-12-12 19:06:44
【问题描述】:
对单个项目进行修改后重新索引的正确方法是什么。
示例上下文:
我们公司依赖名为 Stone Edge 的第三方库存管理平台。我们还在多个店面销售商品,包括 Magento、亚马逊、Ebay 和 Buy.com
Stone Edge 每 10 分钟一次从网站下载所有订单,然后将库存调整发送回我们的 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();
但是,完成此操作后,问题变得明显。项目本身已重新编入索引,但如果它们是分组产品的成员,则不会更新该组产品。
我需要解决一个明显的问题。解决这个问题的最佳方法是什么?
如果我碰巧想出一个答案,我会发布一个答案。
【问题讨论】:
-
这只会重新索引库存数量,对吗?导入产品数据后是否可以使用类似的代码更新
catalog_product_flat和catalogsearch_fulltext索引? IE。它可以插入新行和/或修改现有行吗? -
我仍在寻找 Buttle 关于将其应用于其他索引(尤其是 catalog_product_flat)的问题的答案。有人吗?