关于Laravel Scout的关系数据库更改的Algolia更新索引

时间:2016-11-05 20:04:33

标签: laravel algolia

我已经为我的电影表实现了Aloglia,并将actor作为关系表,它工作正常。

问题:

当我更新任何电影时,它也会更新algolia索引(很好)。但是如果我在关系表中做了任何更改(例如更新电影的演员),我怎么能更新索引。

如何使用laravel scout手动推送特定记录。

由于

1 个答案:

答案 0 :(得分:0)

问题本身在于laravel的事件。正在发生的事情是侦察员正在倾听“更新”的声音。保存模型对象时仅在laravel中发生且为脏的事件(也就是值与db中的值不同)。

有两种方法可以做到这一点。

糟糕的懒惰方式只是在保存之前将this.selectedOption = '1'; 添加到模型中 - 这将强制->touch()字段更新并最终触发更新的事件。这很糟糕,因为您正在浪费数据库查询。

第二种也是最好的方法是在“保存的”上注册另一个观察者。无论对象是否脏,都会触发。可能你想要检查模型是否是脏的并且只在不存在时进行索引(以防止从更新的事件中进行双重索引)或者只是取消注册“更新的”'侦察员进入侦察兵。