php - Laravel Scout:仅在特定字段更改时更新
问题描述
我正在尝试通过仅在我关心的数据发生更改时更新我的 Algolia 记录(从而节省数千次不必要的操作)来优化我的应用程序。
我有一个表格,其中包含有关各种产品的价格信息,当价格变化时每分钟更新一次。目前,Algolia 中的可搜索模型与预期保持同步,但这是不必要的,因为我网站上的搜索功能只提供产品本身的搜索,而不是价格。
目前,每次在模型上调用该方法时,Scout 都会在 Algolia 中执行一次操作(每个update()
模型每分钟一次)。
有没有一种方法可以有条件地触发 Algolia 仅在模型的制造商、产品或变体发生变化而不是价格发生变化时进行更新?
我的模型上的toSearchableArray()
功能目前看起来像这样,如果这有帮助的话:
public function toSearchableArray() {
return [
'id' => $this->id,
'manufacturer' => $this->manufacturer,
'product' => $this->product,
'variant' => $this->variant,
];
}
解决方案
withoutSyncingToSearch
方法是你要找的吗?
这意味着在您当前使用此方法更新价格的任何地方进行包装。
虽然您的问题中未提供此代码,但我假设以下内容:
\App\Model::withoutSyncingToSearch ( function() use ($item, $newPrice) {
$item->price = $newPrice;
$item->save();
});
可以为你工作吗?
推荐阅读
- java - Java 和 ExtentReport:如何以 JSON 格式添加新行
- java - “工作” jar 存档可以通过控制台打开,但不能直接使用 java.exe
- php - PHP Laravel Homestead - 应该抛出错误时出现分段错误(核心转储)
- dart - Dart 中 onPressed 属性后面的空括号是什么意思?
- node.js - Vuejs没有向服务器发送身份验证令牌
- java - 将文件转换为 JSON
- java - 在 wildfly 10.1 中配置 JNDI 属性
- oracle - SQL Server 到 Oracle 语言翻译器
- javascript - 输入事件无法识别在边缘
- jenkins - 触发 jenkins 基于多分支管道创建标签