首页 > 解决方案 > 如何为我的所有模型添加相同的事件侦听器?

问题描述

假设我有模型AB和。现在我想听听他们的活动。通常,我会去我的并为每个模型添加事件,如下所示:CDcreatedAppServiceProvider

public function boot()
{
    A::created(function ($a) {
        //some code
    });

    B::created(function ($b) {
        //some code
    });

    C::created(function ($c) {
        //some code
    });

    D::created(function ($d) {
        //some code
    });
}

代码是一样的,我想让这个过程更快,因为我实际上有 70++ 模型。那么有没有一种方法可以将单个函数绑定到created我所有模型的事件上,而不必一个一个地做呢?

编辑:原来我想要的已经在这个问题中了,但是由于它已经得到了回答,我不想删除它。

标签: eloquentlaravel-5.3

解决方案


创建一个基础模型类并继承您的模型 A、B、C 和 D。基础模型的保存方法将触发一个事件,例如 model_create,您将只在一个地方监听该事件。这样您就可以为您的所有模型处理事件。


推荐阅读