Laravel Eloquent事件实施

时间:2017-08-15 11:04:42

标签: laravel events eloquent laravel-events

我正在更新我的模型实例或插入一个像这样的新实例:

$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事件)的好教程的链接,或者可能会在这里简要解释一下吗?

提前谢谢!

2 个答案:

答案 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