2011-09-28 1 views
1

내 찾기 쿼리에서 2로 재귀 적으로 설정했습니다. 이것은 훌륭하고 모든 결과를 반환하지만 재귀 쿼리에서 Teo 레벨의 깊은 결과를 Day로 그룹화해야합니다.CakePHP 재귀 그룹 결합하기

이것은 내가 가지고있는 것입니다 : Project->Track->Lapse. 하지만 트랙 결과에 따라 그룹화해야합니다. 어떻게해야합니까?

$project = $this->Project->find('all', array(
    'conditions' => array(
       'Project.id' => $id, 
       'Project.user_id' => $this->Auth->user('id') 
    ), 
    'recursive' => 2 
    ) 
); 

답변

2

IMHO, 케이크의 ORM은 사소한 것 이상으로 매우 실망스러운 경향이 있습니다. 모두의

  1. 먼저 디버그 레벨 2를 사용하고 케이크가 생성하는 쿼리를 살펴 : 여기 해결책을 찾기 위해 어떻게 할 것인지입니다입니다. 그것은 당신이 가진 협회의 유형에 달려 있습니다. find()에 대해 하나의 검색어가 생성되는 경우 운이 좋은 것입니다. find 옵션 배열에 'group'키를 추가하기 만하면됩니다.

    A) Containable을 시도해보십시오 케이크

  2. 아마 둘 이상의 조회를 생성하는 두 가지 해결책이 있습니다. 옵션을 조작하여 Cake가 적절한 JOIN을 가진 단일 쿼리를 작성하게 만들 수 있다면, 찾기에 'group'옵션을 추가 할 준비가 된 것입니다. 그러나, 나는 종종 그것을 시도하고 좌절하고 다음과 같은 옵션에 의지했다.

    b) 결과를 그룹화 할 수 있도록 사용해야 할 케이크를 수동으로 JOIN에게 알립니다. 먼저 연관된 모든 모델의 연결을 해제 한 다음 (this이 유용 할 수 있음) 'joins' option을 사용하여 조인을 강제 실행하면됩니다. 그런 다음 찾기에 '그룹'옵션을 추가 할 수 있습니다.

결과를 그룹화 할 때뿐만 아니라 관련 모델별로 필터링 할 때도 실제로 실제로 옵션 2b를 사용합니다.

+0

감사합니다. – benhowdle89