2016-11-05 108 views
0

我已经为Actor电影表实现了Aloglia作为关系表,它工作正常。Algolia关于关系数据库更新索引与Laravel Scout相关变化

问题:

当我更新任何电影公司也更新algolia指数(良好)。但是,如果我在关系表中做了任何更改(例如更新电影的演员),如何更新索引。

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

谢谢

回答

0

问题本身在于laravel的事件。发生什么事是侦察员正在侦听一个'更新'事件,这个事件只发生在laravel模型对象被保存并且很脏的时候(也就是与db中的值不同)。

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

糟糕的懒惰方式只不过是在保存之前将->touch()添加到模型 - 这将迫使updated_at字段更新并最终触发更新的事件。这很糟糕,因为你在浪费数据库查询。

第二个也是最好的方法是在'保存'上注册另一个观察者,而不管对象是否脏。可能你要么检查模型是否脏,并且只有当它不是(为了防止来自更新事件的双重索引)或只是注销Scout中出现的'更新'侦听器时才检索。