RustaMechanic
@RustaMechanic
Разработчик, студент, кодер

Как реализовать вывод товаров по категориям и подкатегориям (Laravel 5.4)?

Добрый день!
Пытался искать ответ на вопрос сам, но найти более-менее полный вариант реализации не удалось.

Я новичок в Laravel и сейчас задался целью написать платформу интернет-магазина.
Проблема:
Есть модель "Product", в ней хранятся товары.
У интернет-магазина есть категории (первого уровня), а у них - подкатегории (второго уровня).
Товары могут принадлежать сразу нескольким категориям (то есть каждый товар может выводиться по нескольким категориям).

Не понимаю как сделать следующее:
1) Как правильно реализовать создание категорий и подкатегорий и потом связывать товары с ними.
2) Как в дальнейшем получать список товаров запрашиваемой категории или подкатегории (то есть /category/ или /category/subcategory/).
3) И как правильно организовать роутинг такого типа /shop/{category}/{subcategory}/{productID} (то есть как правильно написать логику роутинга).

Буду искренне благодарен человеку, который поможет в этом разобраться!
  • Вопрос задан
  • 5087 просмотров
Решения вопроса 1
@jacob1237
Ваша задача с категориями не относится к контексту Laravel - это задача о хранении деревьев в СУБД.
Рекомендую ознакомиться вот с этим ответом: https://toster.ru/answer?answer_id=952447#answers_...

Принадлежность товаров нескольким категориям в реляционных СУБД (если Вы работаете именно с ними) оформляется как связь "многие-ко-многим" (many-to-many).

Роутинг Вы уже реализовали в своем ответе. {category} {subcategory} {productID} - это параметры роута, которые будут передаваться в контроллер (документация).

В контроллере просто вытаскиваете эти параметры, фильтруете и подсовываете в SQL запрос. Хотя {category} (как впрочем и subcategory) здесь даже будет лишним. Но для красоты можете и оставить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
humiliation
@humiliation
Чем больше знаю - тем больше дурак
Как выше написали = многие ко многим

Будет промежуточная таблица, где будут перечислены id категорий и один id товара (категорий же меньше чем товаров)
Соответственно, при переходе на страницу категории мы знаем ее id, достаем по ее id все id товаров из промежуточной таблицы, информацию о товарах по их id достаем из базы товаров
???
PROFIT!
Ответ написан
Ваш ответ на вопрос

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

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