2010-04-02 2 views
1

사용자 지정 쿼리를 사용하지 않아도됩니다.CakePHP : 2 레벨 딥 연관 모델을 기반으로 결과를 주문하려면 어떻게합니까?

관련된 모델은 관련 모델에 대한 빈 배열과 달리 연관된 모델이 비어있는 경우 레코드가 전혀 검색되지 않도록 데이터를 검색하는 방법입니다. 아주 간략 예를 들어, 나는 다음과 같은 모델이 있다고 가정으로

: 시 -> 스트리트 -> 주택

어떻게 집 번호로 I 정렬시 결과?

도시에 적어도 하나의 주택이있는 도시를 검색하려면 어떻게해야합니까? 저는 도시 이름과 세부 사항이있는 레코드와 빈 하우스 (House) 배열이 페이지 매김 결과를 망칠 때를 원하지 않습니다.

CakePHP는 별도의 쿼리에서 Street에 속한 하우스 레코드를 검색하므로 검색 쿼리의 'order'필드에 'House.number DESC'와 같은 값을 입력하면 '필드가 존재하지 않습니다.'오류가 반환됩니다.

아이디어가 있으십니까?

+0

간단한 사용 방법을 제공하여 페이지의 작동 방식을 더 잘 설명 할 수 있습니까? –

답변

2

첫 번째 질문에 대해서는 모델 연결에서 순서를 지정하여 결과를 주문할 수 있다고 생각합니다. 스트리트 모델에서 예를 들어

:

var $hasMany = array('House'=>array('order'=>'address desc')) 

사용자 지정 쿼리없이 도시 거기에 적어도 하나의 집 구하기 힘든 것입니다, 그래서 당신이 지출 대신에 그 길을가는 것이 더 있습니다 너무 많은 시간이 그것을 케이크에서 일하게하려고 노력했다.

+0

감사합니다. 필자는 케이크가 관련 모델을 가져 오기 전에 원하지 않는 결과를 필터링 한 내부 조인을 사용하여 사용자 지정 쿼리를 피했습니다. – KcYxA

+0

부엉 감사합니다. 쿼리를 수행 한 후 수동으로 관련 결과를 정렬해야한다고 생각했습니다. 건배 – Bear

3

컨트롤러에서 실제 쿼리 작업을 수행하기 전에 모델에서 order 절을 설정하십시오.

$this->City->Street->hasMany['House']['order'] => "houseNo DESC"; 
+0

스트리트에는 또한 '주문'상태가 있습니까? 우선 순위는 어느 것이고 제어 할 수 있습니까? – KcYxA

+0

조건을 연결할 수 있습니다. 테스트되지 않음 : $ this-> Model-> hasMany [ 'OtherModel'] [ 'order'] => '필드 DESC'. $ this-> Model-> hasMany [ 'OtherModel'] [ 'order']; – matiasf

관련 문제