2010-05-27 3 views
0
내가 CakePHP의에서 다음과 같은 결과를 얻을 수있는 방법

CakePHP의 1.3에서 루프에서 찾기 : 내 응용 프로그램에서은 실행중인 모델 :

토픽이 범주에 관련이 카테고리는 도시와 도시 관련이 마지막이다 즉

상태로 관련 :
주제 범주에 속하는를, 카테고리가 도시에 속한 도시

이 지금 화제 컨트롤러의 index 액션에서 나는 모든 주제를 찾으려면 .. 상태에 속하는과이다 도시와 주.

어떻게하면됩니까?

사용자 지정 쿼리 ($ this-> Model-> query() 함수)를 사용하면 쉽게 수행 할 수 있지만 페이지 매김의 어려움에 직면하게됩니다.

나는 (루프에서 실행 쿼리)

재귀 적 속성을 사용하고 가장 높은 값으로 설정 좋은 것이 아니다 나는 채택이

function index() 
{ 
    $this->Topic->recursive = 0; 
    $topics = $this->paginate(); 
    for($i=0; $i<count($topics);$i++) 
    { 
     $topics[$i]['City'] = $this->Topic->Category->City->find('all', array('conditions' => array('City.id' => $topics[$i]['Category']['city_id']))); 
    } 
    $this->set(compact('topics')); 
} 

방법 같은 일을 시도 (2) 성능이 저하되고 상태 정보를 얻을 수 없습니다.

어떻게 해결해야합니까?

는 몇 가지 작업을 수행 할 수 있습니다, 잘

감사

답변

1

도와주세요 :

  1. 설정 (안 이미 언급 한 이유로 권장) 3에 recursive 옵션을 선택합니다.
  2. Containable 동작을 사용하십시오. 내가 연결 한 문서는 상당히 견고한 사용 지침을 제공한다고 생각합니다.

불행히도 Containable 동작이 페이지 매김에 미치는 영향에 대해 말할 수 없습니다.

+0

:-) 감사합니다. 이 동작은 끝내 내 문제를 해결했습니다. 페이지 집합 배열을 문제없이 페이지 매김을 지정하는 방식으로 설정할 수 있습니다. 배열을 올바르게 구성하면됩니다. –

+0

좋은 물건. 내 'Containable'에 대한 나의 경험은 항상 긍정적 인 말 이었으므로 문제가 너무 잘되어 기쁘다. –

+0

예, 이전 버전 (cake v1.2)이 동작을 인식하지 못했으며이 기능으로 인해 프로젝트가 중단되었습니다. 이제 내가이 문제에 다시 직면했을 때 나는 그것 앞에서 항복하지 않고 cakephp에 집착하지 않기로 결정했다. 나는 내가 이전에 가졌던 (프레임 워크와 관련된) 많은 질문에 답했을 때이 행동에 대해 배우는 것보다 행복하다. –

1

포함 할 수있는 동작을 사용하면 재귀 수준을 설정할 필요가 없습니다. cakephp에 의해 자동으로 조정됩니다.

+0

흠 ... 사실, 네 말이 맞아. –