在我的项目中,所有模型都扩展了 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/

    10-11 04:20