【发布时间】:2016-10-03 09:11:44
【问题描述】:
我正在尝试将我的数据库与外部服务同步。
我在 Web 应用程序的几个地方使用 Algolia 搜索。
它被几个模型索引,但是我需要它来重新索引,以防对数据库进行任何更改,即当多个模型事件被触发时。
我的第一个方法是在 AppServiceProvider
的 boot 方法中执行所有操作public function boot()
{
$events = ['created', 'updated', 'deleted', 'restored'];
// reindex handlers for models relevant to Algolia search
foreach ($events as $evt) {
Order::registerModelEvent($evt, function () {
Order::reindex();
});
Product::registerModelEvent($evt, function () {
Product::reindex();
Product::setSettings();
});
}
}
这是我使用docs 中示例的标准模型函数来避免多个条件的方法。
但是我假设有更好的方法使用 Laravel 事件监听器。
namespace App\Listeners;
class OrderEventListener
{
// handlers
public function subscribe($events)
{
$events->listen(
// model events
);
}
}
虽然我不确定如何在 listen 方法中利用模型事件。
【问题讨论】:
标签: php laravel laravel-5 laravel-5.2 algolia