У вас уже есть столбец parent_id
. Используйте это, чтобы представить отношения между категориями. Если категория находится на корневом уровне, для этого столбца устанавливается значение NULL
.
Другим подходом будет третья таблица, которая отображает категории в подкатегории. Это позволит вам идти как сверху вниз, так и снизу вверх. Зависит от вашего приложения, какой подход вы используете.
Чтобы справиться с этой иерархией, вам нужно написать несколько рекурсивных функций и найти правильное представление в PHP, которое может правильно обрабатывать иерархию категорий.
Простая рекурсивная функция для печати каких-либо хлебных крошек будет выглядеть так (я предполагаю, что в этом примере у вас есть какой-то ORM на месте):
function findWayToTop($category, $breadcrumbs = array()) {
$breadcrumbs[] = $this;
$parent = $category->getParent();
if ($parent != null) {
return findWayToTop($parent, $breadcrumbs);
} else {
return $breadcrumbs;
}
}
Если вы не используете ORM, самый простой способ - извлечь все категории из базы данных и сохранить их в массиве, где ключ является идентификатором. Затем вы можете заменить вызовы массива в приведенном выше коде, и это также работает.