【发布时间】:2016-03-06 16:57:07
【问题描述】:
我有一个扩展了 Eloquent 模型的审计类...
class Audit extends Model {
}
我有一个可审核的界面...
interface IAuditiable {
public function audit();
}
我有一个 trait 可以满足接口并定义模型和审计之间的关系...
trait Auditable {
public function audit(){
return $this->hasMany('Audit');
}
}
我有一个模型,它扩展了 Eloquent 模型,实现了接口并使用了 trait...
class Post extends Model implements IAuditable {
use Auditable;
}
每当创建或更新 Post 模型时,我想将其中的功能添加到 create 或 update 审计。我通过在 Post 上注册一个观察者来解决这个问题,该观察者将捕获“已保存”事件并添加新的审核。
但是,最终会有许多模型使用实现 IAuditable 并使用 Auditable 特征。
所以,我的问题是,是否有可能实现一个观察者,它可以为任何在 Laravel 5.1 中实现 IAuditable 接口的模型获取所有“已保存”事件?
【问题讨论】:
-
你考虑过类似github.com/VentureCraft/revisionable 的东西吗?
-
您可以制作自己的模型合约,实现已保存函数的附加功能,并让您的可审计模型扩展可审计模型
-
是的,@Brynn 这似乎是目前唯一的解决方案。这就是 Venture Craft 的可修改解决方案。我对此不感兴趣,因为 1)我不希望额外继承增加复杂性 2)将来可能会有其他更新需要扩展保存的方法。
标签: php laravel laravel-5.1