Laravel 模型事件不会触发

Zak*_*rki 5 php events laravel laravel-5

我正在使用 ajax 来更新我的模型User,ajax 部分工作正常,因为数据已在数据库中成功更新,在我的控制器操作中执行的更新为:

$user->update($data);
Run Code Online (Sandbox Code Playgroud)

不起作用的部分:

我在模型中使用了boots 方法,例如:updated

class User extends BaseModel
{
    ...

    public static function boot()
    {
        parent::boot();

        self::updated(function($model){
            Log::info("updated");
            dd($model);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

该事件从未发生过,我不知道为什么。

问题: 我尝试在模型更新后执行操作,但事件未触发。

apo*_*fos 7

这是手册的说明update()

通过 Eloquent 发出批量更新时,不会为更新的模型触发保存和更新的模型事件。这是因为在发布批量更新时从未实际检索模型。

您需要使用save来触发事件。就像是:

$user->fill($data);
$user->save();
Run Code Online (Sandbox Code Playgroud)

当然,这是假设这$user是一个模型而不是查询构建器实例。