我有一个审计课程,它扩展了雄辩模型...
class Audit extends Model {
}
我有一个可审核的界面...
interface IAuditiable {
public function audit();
}
我有一个特征,可以实现接口并定义模型和审计之间的关系......
trait Auditable {
public function audit(){
return $this->hasMany('Audit');
}
}
我有一个模型,它扩展了雄辩模型,实现了接口并使用了特征......
class Post extends Model implements IAuditable {
use Auditable;
}
我想将其中的功能添加到create
or update
每当创建或更新 Post 模型时进行审核。我通过在 Post 上注册一个观察者来解决这个问题,该观察者将捕获“已保存”事件并添加新的审核。
然而,最终将会有许多模型使用实现IAuditable
并使用Auditable
trait.
所以,我的问题是,是否有可能实现一个观察者,它可以为实现以下功能的任何模型拾取所有“已保存”事件IAuditable
接口在拉拉维尔 5.1?
您可以尝试挂钩雄辩的事件。在服务提供商中执行类似的操作:
Event::listen(['eloquent.created: *', 'eloquent.updated: *'], function($model) {
// Check if the model implements your interface (could use class_implements(...)
});
我必须做一些与你想做的事情非常相似的事情。该解决方案并不完美,因为您捕获的事件来自every模型,但效果很好。
EDIT: 才发现这个问题是两年前提出的。不过,希望这可以帮助别人:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)