在我的项目中,所有模型都扩展了BaseModel
类,该类默认使用SoftDeletes
特征。但在某些特定情况下,例如在类ShouldHardDelete
中,我不想轻柔地删除数据库记录。让我们假设,我不能否认扩展BaseModel
。
我应该在ShouldHardDelete
类中进行哪些更改以防止其使用软删除?
答案 0 :(得分:2)
您应该做两件事:
bootSoftDeletes()
特征中有一个静态方法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
。