Как реализовать мягкое удаление с помощью журнала активности Laravel?

Я использую пакет Spatie Laravel Activitylog и хочу регистрировать действия обратимого удаления, выполняемые над моими моделями. Однако у меня возникли проблемы с тем, чтобы журналы правильно фиксировали события удаления. Как лучше всего настроить это в Laravel?

Я попытался настроить журнал активности Spatie Laravel для регистрации событий мягкого удаления, используя наблюдателей моделей и добавляя в мои модели особенность Loggable. Я ожидал, что действия по обратимому удалению будут зафиксированы в журнале активности. Однако записи журнала не записывают действия по удалению должным образом.

Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Laravel поставляется с мощной функцией под названием "Eloquent Accessors and Mutators".
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
2
0
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

У меня та же проблема, я думал использовать TapActivity() так:

' public function tapActivity(Activity $activity, string $eventName): void
{
    if ($this->deleted_at !== null) {
        $activity->description = "Order product has been deleted";
    }       
}'

в моем случае это работает, и не забудьте удалить ->dontSubmitEmptyLogs(), если вы его используете. И если вы пытаетесь получить действия для модели, соответствующие ее зависимостям, не забудьте получить их с помощью Trashed(), иначе вы задаетесь вопросом, почему у вас есть журналы, но вы не можете их отобразить (не спрашивайте меня, откуда я знаю ) :Д

Надеюсь, что это вам поможет!

Ответ принят как подходящий
 $designationType = Designation::find($designationId);
            if ($designationType) {
                $designationType->delete();

Здесь мягкое удаление будет протоколироваться идеально, поскольку поиск напрямую вызывает красноречивый orm.

Observation::where('id', $id)->firstOrFail()->delete();

Здесь мне нужно использовать firstOrFail, если есть предложениеwhere, иначе удаление не регистрируется.

Другие вопросы по теме