在我的项目中,所有模型都扩展了 BaseModel
类,该类默认使用 SoftDeletes
特性。但在某些特定情况下,例如在 ShouldHardDelete
类中,我不希望我的数据库记录被软删除。让我们假设,我不能否认扩展 BaseModel
。
我应该在我的 ShouldHardDelete
类中进行哪些更改以防止它使用软删除?
最佳答案
你应该做两件事:
bootSoftDeletes()
trait 中有一个静态方法 SoftDeletes
,用于初始化模型的软删除行为: /**
* Boot the soft deleting trait for a model.
*
* @return void
*/
public static function bootSoftDeletes()
{
static::addGlobalScope(new SoftDeletingScope);
}
在
ShouldHardDelete
类中将其覆盖为空方法: /**
* Disable soft deletes for this model
*/
public static function bootSoftDeletes() {}
$forceDeleting
字段设置为 true
中的 ShouldHardDelete
: protected $forceDeleting = true;
因此,您可以禁用软删除行为,同时仍然扩展使用
BaseModel
特性的 SoftDeletes
。关于laravel - 如何在 Laravel 5.8 Eloquent 模型中禁用软删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56981825/