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个回答

7
以下是使用update()方法时的官方说明:

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

您需要使用save来触发事件。类似于以下内容:

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

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

0

您正在静态访问函数: 请尝试使用

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

这部分代码应该放在哪里?它应该放在某个函数内部,对吗? - Zakaria Acharki
只需将当前代码中的 static 改为 self。 - Jaycee Daily

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接