当我将记录放入"垃圾桶"时,我使用启用softDelete的普通删除方法。
当我强制删除一个记录时,我也想删除所属的图像。所以我想利用拉拉威尔的事件。在强制删除时,我希望执行一些代码。
我可以参加什么活动?当呼叫forceDeleting
时,我得到:
Call to undefined method IlluminateDatabaseQueryBuilder::forceDeleting()
我应该使用什么活动?
编辑现在我使用的是:
Document::deleting(function ($document) {
if(!$document->deleted_at) {
// normal delete
}else{
// force delete
}
});
另请参阅:https://codeneverlied.com/force-deleting-event-in-laravel/
但我仍然想知道是否有这样的活动。
您可以创建自己的事件并自行启动。扩展现有的Delete Event并将其称为Force Deleting是最简单的。
下一步是扩展softDelete特性,自动为您触发此事件。
根据Eloquent文档,以下是事件:
检索、创建、创建、更新、更新、保存、保存、删除、删除、恢复和恢复
因此,要回答你的问题,如果它存在,答案是否定的。根据Laravel 5.8 的文件,不是这样
https://laravel.com/docs/5.8/eloquent
希望我能帮忙。
ImJT
更好的方法是:
// GOOD approach
static::deleted(function ($document) {
if (Document::withTrashed()->where('id', $model->id)->exists()) {
// document is soft deleted
} else {
// document is force deleted
}
});