我试图执行一些额外的清理代码,当一个允许软删除的模型被删除。即使模型已经(软)删除Laravel发射删除的事件
我已经迷上了“已删除”事件执行此清理代码如下:
protected static function boot()
{
parent::boot();
static::deleted(function ($mymodel) { <cleanup code here> });
}
但是我发现,如果删除被称为上已经删除模式,删除事件会再次发射。我希望在框架中有一个检查来防止这种情况发生,但它似乎不适合软删除模型?
编辑:我没有那么多想讨论是否调用软删除记录上的删除应该/不应该再次触发删除事件。我猜想会有不同的意见。事实是,它目前确实,我的要求是它没有,所以这是更多的下一部分围绕如何稳健地实施我需要一些帮助的检查:
如果我必须实施我自己检查这一点,是否可以重写模型上的删除方法 - 或者还有其他方式可以删除模型?我对这一点的关注是为什么我首先听取删除的事件来运行清理代码 - 而不是重写delete方法,并在调用parent :: delete()之后放置我的清理代码,因为我认为应该调用delete事件,而不管模型的删除是如何启动的(如果确实有多种方式?)。
你首先在已经删除的模型上调用'delete()'的原因是什么? – lesssugar
是的,这是我在构建/调试前端时遇到的问题,所以不要同意首先发生的事情。不过,我正在使用delete事件来替代传统上可能通过数据库触发器所做的事情,所以我希望数据库和对象模型稳固可靠,并且不易受前端中的错误影响。我有点像查看属性设置器,传统上在将值设置为X并可能触发更改的事件之前检查属性的值不是X. – madz