【问题标题】:When the indexer class functions are triggered in magento2当在 magento2 中触发索引器类函数时
【发布时间】:2018-08-21 12:56:28
【问题描述】:

我已经为我的自定义模块创建了自定义索引器,并且在清除缓存后,后端的管理索引器页面中显示一行。 我创建了一个索引器类并实现了 \Magento\Framework\Indexer\ActionInterface、\Magento\Framework\Mview\ActionInterface 类,因为这两个类是接口,所以我们必须实现在两个接口中声明的所有函数。 我想知道这四个execute,executeFull,executeList(array $ids),executeRow($id)函数在触发时。请查看下面的类以供参考。

命名空间 Ezest\Practice\Model\Indexer; 类测试实现\Magento\Framework\Indexer\ActionInterface, \Magento\Framework\Mview\ActionInterface { 公共函数执行($ids){ //代码在这里! } 公共函数 executeFull(){ //代码在这里! } 公共函数执行列表(数组$ids){ //代码在这里! } 公共函数执行行($id){ //代码在这里! } }

【问题讨论】:

  • 下级?忘记添加了吗?
  • 类已添加。

标签: indexer magento2.2


【解决方案1】:

executeFull:从命令行运行索引时将调用execute。它将对该实体的所有 id 进行完整的重新索引。

executeRow:executeRow 将索引单个行。它通常在您保存单个实体 ID(如 catalog_product、salesrule_rule 等)时调用。

当您将索引设置为“按计划更新”时。在这种情况下,它将生成带有后缀“_cl”的虚拟表。此表包含 2 列,如下所示: 版本号 entity_id

此时executeList就会出现在画面中。

executeList:executeList 将查找上一个版本 id 和当前版本 id 之间的差异。在这之间,它索引所有的entity_ids。

execute:execute 将根据存储在 mview_state 表中的数据调用。它将重新索引 mview_state 表中的实体。当您将索引设置为“按计划更新”时,这将再次起作用。

【讨论】:

  • 嗨,Darshan,谢谢你的回答我理解了关于 executeFull 的解释,我用实际的方法进行了尝试,发现了积极的结果。我理解了“按计划更新”的解释,我尝试了一下,得到了清晰的画面。假设我有一个自定义 eav 模块,我想为此创建自定义索引器,就像 mangento 为供应商模块做的那样。如果我在executeRow,executeList,execute中编写代码,它将自动执行还是我必须通过调用它来执行它,正如你所说的executeRow会在更改实体时调用。我想清楚地了解其他功能。
  • 您对此有何参考?
猜你喜欢
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多