2014-02-23 3 views
1

현재 모델에서 이진 트리 구조를 만들어야하는 프로젝트에서 작업 중입니다. 그것은 "사람이 2 명의 친구를 가질 수있는 것과 비슷합니다. 그 2 명의 친구도 모두 사람입니다. 그래서 그들은 또한 각각 2 명의 친구를 가질 수 있습니다." 마지막으로 깊이 우선 노드 검색을 수행해야합니다.CakePHP 모델에서의 노드 노드와 같은 동작

내가 4 단계까지 깊이 검색을 수행하려면, 나는 또한 수준의 예를 들어, 완료되지 않은 경우 알고 싶어

         person(root) 

        person(branch A)      person(branch B) 

     person    person    person    person 

    person person person person  (no children)  (only 1 child)person 

당신이 볼 수 있듯이, 지점은입니다 최대 4 단계를 완료하십시오. 하지만 지점 B은 그렇지 않습니다. 나는 반복 알고리즘을 누락

$person = $this->Person->find('first', $conditions); 
if(empty($person['Person']['friend_1'])) 
    $uncomplete = true; 

:

나는 완료되고 어느 쪽이 아닌 것은 무엇인가처럼 arrayempty() 기능을 사용하여 확인하는 것입니다 분기를 알 수있는 방법을 추측하고있어 여기 노드를 통해,하지만 내가 정말로 필요로하는 것은 hasOne/belongsTo의 4 개의 깊이를 검색하는 방법 (어느 것이 어느 것이지 확실하지 않음)은 Model::recursive = 4입니까?

어떤 제안이 우리가하지 않아도, 감사

케이크에

답변

0

를 부탁드립니다 재귀 4. 재귀 2 -1 사이가 될 수 현재 테이블 (다른 의미 모델의 행동)에 연결되어 관련 테이블에 사용.

또한 귀하의 테이블 구조에 관한 것입니다. 이것이 당신의 테이블 구조에 맞는 것을보기 위해 여기 케이크 기사를 읽으십시오. 케이크에는 3 가지 모델 구조가 있습니다. 예 : $ actsAs = 트리 또는 이러한 질문 기사에 함유 성 또는 번역

보기 :

Reference 1

Reference 2

Reference 3