Лучшая практика для вывода хлебных крошек в PHP

Как часть решения для электронной коммерции, над которым мы работаем, CMS имеет возможность для категорий продуктов иметь неограниченное количество подкатегорий, и каждая подкатегория может иметь неограниченное количество подкатегорий. По сути, существует неограниченный уровень вложенности для категорий товаров.

Схема таблицы базы данных для категорий выглядит примерно так:

+-------------+-----------------+----------------+
| category_id |      name       |   parent_id    |
+-------------+-----------------+----------------+
|     1       |    Parent 1     |      null      |
|     2       | Child of Parent |        1       |
+-------------+-----------------+----------------+

Мы хотим добавить навигационную цепочку для каждого уровня навигации по категориям, поэтому мой вопрос: как лучше всего перебирать категории, пока есть назначенный родитель, пока он не достигнет верхнего уровня?

Очевидно, мы можем закодировать его в фиксированном цикле (например, if($child->hasParent()) { echo '1'; if($child->children->hasParent() { } } и т. д.

Как вы перебираете неизвестное количество категорий, пока не достигнете категории верхнего уровня (то есть категории, которой не назначено parent_id?


person BenM    schedule 25.06.2011    source источник


Ответы (2)


Просто используйте для этого цикл while.

while($child->hasParent()) {
     echo $child->name();
     $child = $child->Parent();
}
person Balanivash    schedule 25.06.2011

Если (родительский класс == null)

тогда дочерний класс == null

иначе имеет родительский класс (нуль) == 0

повторить

person john mathew    schedule 28.05.2013