如何在Laravel 5.8 Eloquent模型中禁用软删除

时间:2019-07-11 04:53:28

标签: laravel oop laravel-5 eloquent soft-delete

在我的项目中,所有模型都扩展了BaseModel类,该类默认使用SoftDeletes特征。但在某些特定情况下,例如在类ShouldHardDelete中,我不想轻柔地删除数据库记录。让我们假设,我不能否认扩展BaseModel

我应该在ShouldHardDelete类中进行哪些更改以防止其使用软删除?

1 个答案:

答案 0 :(得分:2)

您应该做两件事:

  1. 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() {}
  1. $forceDeleting中将true字段设置为ShouldHardDelete
    protected $forceDeleting = true;

因此,您可以禁用软删除行为,同时仍然扩展使用BaseModel特性的SoftDeletes