@Evgeniuster

Какую сделать структуру и запросы для каталога?

Каталог товаров. Кроме Бытовой химии есть еще главные категории. У каждого товара может быть разное количество вложенных категорий.
spoiler
5ee9c1bd860c1830598916.jpeg

на сайте соответственно будет меню:
spoiler
5ee9c2bc8da74702028422.jpeg

Таблица категорий:
spoiler
5ee9c1c6056ea720649963.jpeg

Таблица товаров:
spoiler
5ee9caff70174984431483.jpeg

1. Правильная структура для такого каталога?
2. И как делать запросы?
Одно дело, если посетитель нажал на "Антибактериальное", показываем товары у которых parentCategory_id=7
А если посетитель нажал на "Мыло" или "Бытовая химия"... как показать все товары в этой категории, включая все подкатегории?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Нормальная структура. Только писать в таблице parentCategory_id глупо, по двум причинам. Во-первых, у товара нет никакой родительской категории. А есть просто категория. Во вторых, мешать стили именования - это как ходить в гразных штанах. Традиционно для баз данных используется змеиный стиль в нижнем регистре. Поэтому просто category_id

Второй пункт относится и к таблице категорий тоже. поэтому просто parent_id

Как получать все дочерние категории - в общем без разницы. можно с рекурсией, но чтобы было совсем просто, я предлагаю тупо добавить поле path, в котором печечислить все родительские котегории через точку. Например для жидкого туалетного мыла path будет 1.2.3.4.6
соответственно, если клиент ждет мыла, то получаем path из мыла, и пишем в запросе WHERE path like "1.2.%"

Заодно и выводить сортировать дерево категорий моно будет простой сортировкой order by path
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gromdron
@gromdron
Работаю с Bitrix24
Для начала читаем как можно хранить деревья: https://habr.com/ru/post/153861/

Я бы сделал по-другому:

1) Таблица с иерархией категорий tbl_category по методу Nested Sets

2) Таблица товаров tbl_product
- id,
- name,
- art,
- price

3) Таблица связи товара с категорией tbl_product_category
- product_id
- category_id
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы