Laravel模型事件不会触发

时间:2018-10-01 07:41:59

标签: php laravel events laravel-5

我正在使用ajax更新我的模型User,由于数据库中的数据已成功更新,因此ajax部分可以正常工作,在我的控制器动作中,更新是由:

$user->update($data);

无效部分:

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

class User extends BaseModel
{
    ...

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

        self::updated(function($model){
            Log::info("updated");
            dd($model);
        });
    }
}

该事件从未达到,我不确定为什么。

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

2 个答案:

答案 0 :(得分:3)

这是手册中update()的内容

  

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

您需要使用save来触发事件。像这样:

$user->fill($data);
$user->save();

这当然是假设$user是模型而不是查询生成器实例。

答案 1 :(得分:0)

您正在静态访问该函数: 而是尝试使用

self::updated(function($model){
            Log::info("updated");
            dd($model);
        });