Как реализовать вывод товаров по категориям и подкатегориям (Laravel 5.4)?
Ваша задача с категориями не относится к контексту Laravel - это задача о хранении деревьев в СУБД.
Рекомендую ознакомиться вот с этим ответом: https://toster.ru/answer?answer_id=952447#answers_...
Принадлежность товаров нескольким категориям в реляционных СУБД (если Вы работаете именно с ними) оформляется как связь "многие-ко-многим" (many-to-many).
Роутинг Вы уже реализовали в своем ответе. {category} {subcategory} {productID} - это параметры роута, которые будут передаваться в контроллер (документация).
В контроллере просто вытаскиваете эти параметры, фильтруете и подсовываете в SQL запрос. Хотя {category} (как впрочем и subcategory) здесь даже будет лишним. Но для красоты можете и оставить.
Как выше написали = многие ко многим
Будет промежуточная таблица, где будут перечислены id категорий и один id товара (категорий же меньше чем товаров)
Соответственно, при переходе на страницу категории мы знаем ее id, достаем по ее id все id товаров из промежуточной таблицы, информацию о товарах по их id достаем из базы товаров
???
PROFIT!