Как отключить мягкое удаление в Laravel 5.8 Eloquent модели - PullRequest
2 голосов
/ 11 июля 2019

В моем проекте все модели расширяют класс BaseModel, который использует черту SoftDeletes по умолчанию. Но в некоторых конкретных случаях, например в классе ShouldHardDelete Я не хочу, чтобы мои записи в БД мягко удалялись. Предположим, я не могу отрицать, что расширение BaseModel.

Какие изменения я должен внести в мой класс ShouldHardDelete, чтобы он не использовал мягкое удаление?

1 Ответ

2 голосов
/ 11 июля 2019

Вы должны сделать две вещи:

  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() {}
Установите для поля $forceDeleting значение true в ShouldHardDelete:
    protected $forceDeleting = true;

Таким образом, вы можете отключить режим мягкого удаления, продолжая расширять BaseModel, который использует SoftDeletesчерта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...