0
我已經爲Actor電影表實現了Aloglia作爲關係表,它工作正常。Algolia關於關係數據庫更新索引與Laravel Scout相關變化
問題:
當我更新任何電影公司也更新algolia指數(良好)。但是,如果我在關係表中做了任何更改(例如更新電影的演員),如何更新索引。
如何用laravel scout手動推送特定記錄。
謝謝
我已經爲Actor電影表實現了Aloglia作爲關係表,它工作正常。Algolia關於關係數據庫更新索引與Laravel Scout相關變化
問題:
當我更新任何電影公司也更新algolia指數(良好)。但是,如果我在關係表中做了任何更改(例如更新電影的演員),如何更新索引。
如何用laravel scout手動推送特定記錄。
謝謝
問題本身在於laravel的事件。發生什麼事是偵察員正在偵聽一個'更新'事件,這個事件只發生在laravel模型對象被保存並且很髒的時候(也就是與db中的值不同)。
有兩種方法可以做到這一點。
糟糕的懶惰方式只不過是在保存之前將->touch()
添加到模型 - 這將迫使updated_at
字段更新並最終觸發更新的事件。這很糟糕,因爲你在浪費數據庫查詢。
第二個也是最好的方法是在'保存'上註冊另一個觀察者,而不管對象是否髒。可能你要麼檢查模型是否髒,並且只有當它不是(爲了防止來自更新事件的雙重索引)或只是註銷Scout中出現的'更新'偵聽器時才檢索。