Я столкнулся с довольно сложной проблемой, и мне нужно поведение дерева, чтобы помочь.
У меня есть таблица с именем nodes
, у этой таблицы уже есть дерево, и это дерево используется для построения меню.
Теперь мы хотим сделать возможным создание нескольких меню, поэтому я создал таблицы node_menus
и menus
.Итак, Nodes hasAndBelongsToMany Menus
Однако есть небольшая проблема, меню построены, но используются $this->Node->find('threaded')
, поэтому возможны подменю.Все узлы могут использоваться в нескольких меню, и все меню нуждаются в дереве, чтобы можно было упорядочивать узлы и создавать подменю.
Для этого я думал о создании одной таблицы, содержащей деревья для каждого меню исвяжите узел с каждой строкой в древовидной таблице.
Так что в основном мне нужна таблица trees
с отношением Trees belongsTo Nodes
.В этом дереве у меня есть поля menu_id
, node_id
, parent_id
, lft
и rght
.
Теперь вопрос в том, возможно ли несколько деревьев в одной таблице?Скажем, я хочу дерево, где menu_id
равно 15. Можно ли использовать find('threaded')
с указанным идентификатором, который будет возвращать все данные и узлы, связанные с node_id
.Включая все остальные основные функции для создания и управления деревом.
Возможно ли это?Если нет, то есть ли у кого-нибудь лучшее решение о том, как создать несколько меню, в которых узлы могут быть размещены в нескольких меню, которые можно упорядочить и нарезать?