我正在更新我的模型实例或插入一个像这样的新实例:
$model = Model::updateOrCreate([id' => $request['id']],
$model_to_update_array);
我只想在现有的模型实例('tourist')更新时执行一些代码(而不是在创建新的实例或没有更改时)。
我已阅读有关Eloquent事件的https://laravel.com/docs/5.4/eloquent#events,在我看来,我需要使用更新或更新事件。据我所知,这些事件在Laravel中是“内置的”,所以我不必从这里使用很多东西:https://laravel.com/docs/5.4/events
我还没有找到一个教程,展示如何实现Eloquent事件。由于我根本不熟悉事件概念,所以我很难理解如何使用它们。任何人都可以删除一个关于Eloquent事件(不是一般事件,特别是Eloqeunt事件)的好教程的链接,或者可能会在这里简要解释一下吗?
提前谢谢!
答案 0 :(得分:1)
为特定模型添加Eloquent事件的最简单方法是覆盖其boot()
方法:
protected static function boot()
{
parent::boot();
static::updating(function ($model) {
});
}
当您将其放入模型中时,每次更新模型时都会运行匿名函数。请注意,根据您要执行代码的时间,调用static::updating()
和static::updated()
之间存在差异。
答案 1 :(得分:0)
@TheFallen在StackOverflow的另一个帖子中给出了一个很好的答案,如果您对彻底解释的解决方案感兴趣,请阅读:
Laravel Eloquent Events - implement to save model if Updated