id | category_id | title
1 | 3 | Новый бампер
2 | 3 | Черный бампер
Получается, при переходе в категорию - `Запчасти` нам открывается категория `Кузовные запчасти` и при переходи в нее, нам открывается только одна категория `Бампер`, т.к. в категории `Зеркала` нет товаров.
В голове пока только 1 вариант, это каждый раз при открытии основной категории, перебирать все дочерние и для каждой делать запрос на наличие товаров с данным id под категории `(Prod::where('category_id', id)->count())`
По сути это будет работать, но что делать, если будет вложенность категорий больше, а нужно узнать на 1 уровне или если товаров будет много. Может есть другие варианты?
В голове пока только 1 вариант, это каждый раз при открытии основной категории, перебирать все дочерние и для каждой делать запрос на наличие товаров с данным id под категории
- Можно сделать иначе, например сделать для категории поле-флаг "contents_publish_products" и при редактировании какого либо товара в админке проверять есть ли в этой категории к которой принадлежит этот товар еще какие то опубликованные товары, если есть ставить флаг 1, если нет то 0. И не надо будет перебирать кучу продуктов при запросе со стороны клиента. В результате будешь работать именно с флагами категории а не перебирать сотни товаров при каждом открытии категории на клиенте.
Один раз сформировать рекурсивный массив категорий с JOIN'ом, прижойнить к каждой категории ключ со значением кол-ва товаров, или же тру\фалс. Или же еще на этапе формирования просто в массив эти категории не добавлять