php – 如何观察在Laravel 5.1中实现接口的所有模型?
发布时间:2020-12-14 19:39:25 所属栏目:大数据 来源:网络整理
导读:我有一个审计类,扩展了Eloquent模型…… class Audit extends Model {} 我有一个可审核的界面…… interface IAuditiable { public function audit();} 我有一个特性来完成界面并定义模型和审计之间的关系…… trait Auditable { public function audit(){ r
我有一个审计类,扩展了Eloquent模型……
class Audit extends Model { } 我有一个可审核的界面…… interface IAuditiable { public function audit(); } 我有一个特性来完成界面并定义模型和审计之间的关系…… trait Auditable { public function audit(){ return $this->hasMany('Audit'); } } 我有一个扩展Eloquent Model的模型实现了接口并使用了特征… class Post extends Model implements IAuditable { use Auditable; } 每当创建或更新Post模型时,我都想在其中添加功能来创建或更新审计.我通过在Post上注册一个观察者来解决这个问题,该观察者将捕获“已保存”事件并添加新的审核. 但是,最终会有许多模型使用IAuditable并使用Auditable特性. 所以,我的问题是,是否有可能实现一个观察者,它将为在Laravel 5.1中实现IAuditable接口的任何模型获取所有“已保存”事件? 解决方法
你可以尝试挂入雄辩的事件.在服务提供商中做这样的事情:
Event::listen(['eloquent.created: *','eloquent.updated: *'],function($model) { // Check if the model implements your interface (could use class_implements(...) }); 我必须做一些非常类似于你想做的事情.这个解决方案并不完美,因为您从每个模型中捕获事件,但它运行良好. 编辑:刚刚注意到这个问题差不多在两年前被问到了.希望这可以帮助某人,但:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |