2011-10-06 3 views
3

다소 복잡한 문제가 발생하여 도움이되는 트리 비헤이비어가 필요합니다.CakePHP 트리 동작, 테이블 당 여러 트리

이 테이블에는 이미 nodes이라는 테이블이 있으며이 트리는 메뉴를 작성하는 데 사용됩니다.

지금 우리는 node_menusmenus 테이블을 만들도록 다중 메뉴를 만들 수있게하려고합니다. 그래서 Nodes hasAndBelongsToMany Menus

그러나 약간의 문제가 있지만 메뉴가 내장되어 있지만 $this->Node->find('threaded')을 사용하므로 하위 메뉴가 가능합니다. 모든 노드는 여러 메뉴에서 사용할 수 있으며 모든 메뉴에는 트리가 있어야 노드를 정렬하고 하위 메뉴를 만들 수 있습니다.

나는 각 메뉴에 대한 트리가 포함 된 테이블 하나를 만들고 트리 테이블의 각 행에 노드를 연결하려고합니다.

기본적으로 Trees belongsTo Nodes 관계가있는 trees 테이블이 필요합니다. 이 나무에서 나는 필드가 menu_id, node_id, parent_id, lftrght입니다.

이제 한 테이블에서 여러 개의 트리가 가능합니까? 말해, 나는 나무가 menu_id 인 곳에 원한다. find('threaded')을 사용하여 node_id과 관련된 모든 데이터와 노드를 반환 할 수있는 ID를 사용할 수 있습니까? 트리를 만들고 조작하기위한 다른 모든 핵심 기능을 포함합니다.

이것이 가능합니까? 그렇지 않은 경우 누구나 여러 개의 메뉴를 만들 수있는 방법에 대한 더 나은 솔루션을 제공합니까? 노드는 여러 메뉴로 정렬되어 스레드 될 수 있습니다.

답변

1

다음과 같이 생각하면 단일 트리로 할 수 있습니다.

root[hidden node] 
---- Menu 1 
-------- Item 1.1 
-------- Item 1.2 
-------- Item 1.3 
---- Menu 2 
-------- Sub Menu 2.1 
------------ Item 2.1.1 
-------- Item 2.1 
---- Menu 3 
---- Menu 4 
---- Menu 5 

난 당신이이 작동 할 수 있습니다 : https://github.com/torifat/cake-menu_builder

+0

를 좋아하는 경우에 당신이 그것을 사용할 수 있습니다, CakePHP를위한 메뉴 빌더 플러그인을 만들었어요! 나는 왜 내가 항상 더 복잡하다고 생각하는지 모르겠다. 그래서 메뉴 테이블에서 이것을 할 수 있고, 노드를 메뉴 항목과 연관시킬 수 있으며, 자식을 찾아 나무를 검색 할 수 있습니다. 또한 이렇게하면 관리하기가 훨씬 쉬워집니다. 나는 그것을 시도 할 것이다! –