@kirill-93

Неудобство при мягком удалении laravel?

Использую "мягкое удаление" в laravel, то есть вместо удаления записпей, они помечаются как удаленные.
У меня такая структура:
- Магазин
-- Раздел
--- Каталог
---- Товар

И отдельно есть таблица заказов, где есть поле product_id
Теперь представим, что пользователь заказал товар, а я после этого удалил магазин. Если не использовать мягкое удаление, то через внешние ключи удалятся раздел, каталог, товар и заказ с этим товаром и все будет хорошо, но удаленным помечается только магазин и в контроллере заказов я успешно вижу заказ с удаленным товаром:
Order::all();
Получается, что мне нужно либо проверять всю цепочку через join, например:
Order::join('products...')->join('catalogs...')->join('shop...')->whereNull('products.deleted_at')->whereNull('catalogs.deleted_at') и тп

Либо при удалении обновлять всем дочерним сущностям поле deleted_at.
Как вы с этим работаете?
  • Вопрос задан
  • 331 просмотр
Решения вопроса 1
DJZT
@DJZT
Laravel - code for you
Делал в обработчике события на deleted на модели выборку необходимых связанных моделей и тоже делал им удаление.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ajaxtelamonid
@ajaxtelamonid
Laravel
Возможно, я ретроград, но мне кажется, внешние ключи - это зло. Бизнес-логика отправляется в нетестируемое отдалённое место, про которое можно забыть и однажды накосячить.
Только явно в коде, только хардкор.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы