Есть интернет магазин. В БД содержатся таблицы:
Categories; Subcategories; Products; Product_images;
Product_images хранит пути к изображениям.
Как правильнее реализовать удаление собственно изображений при удалении продукта.
Сейчас настроил через Foreign keys, что при удалении категории автоматически удалятся её подкатегории.
За подкатегорией удаляться её продукты, а за продуктами удаляться и информация об их изображениях из БД.
Пример:
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
Стоит ли вообще использовать тут foreign keys и cascade в sql для автоматического удаления? Или может реализовать это всё уже в коде, т.е. При удалении категории сначала выбрать и получить все подкатегории, потом каждую в цикле удалять, для того, чтобы срабатывали события deleting и deleted, которые соответственно проделают тоже самое со своими продуктами, которые соответственно с изображениями.
(
https://github.com/laravel/framework/issues/2536 - о вызове событий delete*)
Таким образом по порядку будут вызываться события deleted, и можно будет без проблем добавлять при этом любые свои действия, такие как физическое удаление изображений.
Мне кажется что имея настроенные foreign keys проходиться по всему этому в коде дополнительно - глупо. Так как можно перенести тогда удаление полностью в код и обойтись только им.
Не будет ли костылём тот вариант удаления что я предлагал выше?
Меня по началу смущало, что это добавит по циклу в методе destroy каждой модели в этой структуре. Однако, как я понимаю решение через foreign keys так просто не расширить до нужного функционала.
Проект полностью учебный. с целью саморазвития и освоения новых технологий.