我試圖執行一些額外的清理代碼,當一個允許軟刪除的模型被刪除。即使模型已經(軟)刪除Laravel發射刪除的事件
我已經迷上了「已刪除」事件執行此清理代碼如下:
protected static function boot()
{
parent::boot();
static::deleted(function ($mymodel) { <cleanup code here> });
}
但是我發現,如果刪除被稱爲上已經刪除模式,刪除事件會再次發射。我希望在框架中有一個檢查來防止這種情況發生,但它似乎不適合軟刪除模型?
編輯:我沒有那麼多想討論是否調用軟刪除記錄上的刪除應該/不應該再次觸發刪除事件。我猜想會有不同的意見。事實是,它目前確實,我的要求是它沒有,所以這是更多的下一部分圍繞如何穩健地實施我需要一些幫助的檢查:
如果我必須實施我自己檢查這一點,是否可以重寫模型上的刪除方法 - 或者還有其他方式可以刪除模型?我對這一點的關注是爲什麼我首先聽取刪除的事件來運行清理代碼 - 而不是重寫delete方法,並在調用parent :: delete()之後放置我的清理代碼,因爲我認爲應該調用delete事件,而不管模型的刪除是如何啓動的(如果確實有多種方式?)。
你首先在已經刪除的模型上調用'delete()'的原因是什麼? – lesssugar
是的,這是我在構建/調試前端時遇到的問題,所以不要同意首先發生的事情。不過,我正在使用delete事件來替代傳統上可能通過數據庫觸發器所做的事情,所以我希望數據庫和對象模型穩固可靠,並且不易受前端中的錯誤影響。我有點像查看屬性設置器,傳統上在將值設置爲X並可能觸發更改的事件之前檢查屬性的值不是X. – madz