2011-02-10 3 views
1

티켓 테이블과 연락처 테이블이 있습니다. 티켓에는 많은 연락처가있을 수 있습니다.중첩 된 HABTM 배열의 특정 필드 선택

티켓 테이블을 페이지 매김하고 중첩 배열에서 첫 번째 연결된 연락처를 포함한 특정 필드를 선택하려고합니다. 내가 무엇을 시도하든, 나는 이것을 (또는 가능하다면) 이해할 수 없다.

내 코드 :

$this->paginate = array(<br> 
    'conditions' => array('status_id !=' => '3'),<br> 
    'limit'=>50,<br> 
    'fields'=>array('Ticket.title', 'Ticket.ticket_number', 'Priority.name', 'Status.name', 'Contact.0.full_name') <br>    
); 

(. Contact.0.full_name 내가이 일을 할 수있는 방법이 실패의 원인이되는?)

그래서 나는 $this->Paginator->sort에이 열을 사용할 수 있습니다.

답변

0

캔트 같은 전화 열 Contact.0.full_name CakePHP는 그렇게 작동하지 않습니다. 올바른 필드 이름은 TableAlias.column_name

입니다. hasMany 관계의 하위를 정렬 작업에 사용할 수 없습니다.

비슷한 기능을 수행하려면 hasMany을 삭제하고 hasOne을 추가하여 원하는 결과를 얻으십시오. 두 관계 유형 모두에 스키마 변경이 없기 때문입니다.

$this->Ticket->unbindModel(array('hasMany' => array('Contact'))); 
$this->Ticket->bindModel(array('hasOne' => array('Contact'))); 
$this->paginate = array(
    'conditions' => array('status_id !=' => '3'), 
    'limit'=>50, 
    'fields'=>array('Ticket.title', 'Ticket.ticket_number', 'Priority.name', 'Status.name', 'Contact.full_name') 
); 

이제이 열 Contact.full_name을 정렬 용도로 사용할 수 있습니다.

+0

감사합니다. 문제는 내가 $ this-> Paginator-> sort를 사용하여 인덱스 페이지에서 결과를 정렬 할 수 있도록 페이지 넘김 쿼리에서 full_name 연락처를 가져와야한다는 것입니다 ... –

+0

@ user612048 당신은 비행 중에 관계를 떨어 뜨리고 추가 할 필요가 있습니다. (* 나는 그것을 테스트하지 않았습니다 *) – Ish

+0

... 당신이 무엇을 말하고 있는지, 그리고 검색이 비어 있습니다. 당신이 올바른 방향으로 나를 가리킬 수 있습니까? –

관련 문제