Като част от решение за електронна търговия, върху което работим, 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
?