Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Я нашел элегантный способ как решить эту проблему всего лишь чуть-чуть изменив стандартный Nested Set. Идея его проста [...] Ко всем нодам следует добавить идентификатор поддерева в котором они находятся, например id корня.Из ваших слов складывается впечатление, что вы первый, кто нашёл это способ…
//получить все дети поддерева 1
$query = $entityManager
->createQueryBuilder()
->select('node')
->from('Entity\Category', 'node')
->where('node.root = 1')
->getQuery();
Путь можно по колонкам разбить. С такой реализацией и быстро и довольно дешево редактировать. Ограничение по глубине можно обходить используя дополнительные таблицы.
Не понимаю к чему ваши вопросы. Разбивая путь по колонкам имеем целочисленные колонки под идентификаторы родителей. Нужно выбрать всех детей какого-то объекта — делаем условие равенства на соответствующую колонку. Ограничение связано с максимальным количеством колонок у таблицы.
Оптимизация модели Nested Set в PHPixie