2016-11-05 148 views
0

我已經爲Actor電影表實現了Aloglia作爲關係表,它工作正常。Algolia關於關係數據庫更新索引與Laravel Scout相關變化

問題:

當我更新任何電影公司也更新algolia指數(良好)。但是,如果我在關係表中做了任何更改(例如更新電影的演員),如何更新索引。

如何用laravel scout手動推送特定記錄。

謝謝

回答

0

問題本身在於laravel的事件。發生什麼事是偵察員正在偵聽一個'更新'事件,這個事件只發生在laravel模型對象被保存並且很髒的時候(也就是與db中的值不同)。

有兩種方法可以做到這一點。

糟糕的懶惰方式只不過是在保存之前將->touch()添加到模型 - 這將迫使updated_at字段更新並最終觸發更新的事件。這很糟糕,因爲你在浪費數據庫查詢。

第二個也是最好的方法是在'保存'上註冊另一個觀察者,而不管對象是否髒。可能你要麼檢查模型是否髒,並且只有當它不是(爲了防止來自更新事件的雙重索引)或只是註銷Scout中出現的'更新'偵聽器時才檢索。