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