2013-02-22 2 views
0

"섹터"테이블을 페이지 매김 결과에 결합하고 싶습니다.조인 된 테이블을 가진 Cakephp 페이지 매김

$this->paginate = array(
     'joins' => array(
      array(
      'table' => 'sectors', 
      'alias' => 'Sector', 
      'type' => 'left', 
      'foreignKey' => false, 
      'conditions' => array('Company.sector_id = Sector.id'))), 
     'conditions' => $conditions); 

을 한 후 조인 때문에

$jobs = $this->paginate('Job'); 

가 매기기에 의해 생성 된 쿼리가 손상 이동 :이 부문에 가입 할 수 있도록

내가 PAGINATE 변수를 설정 : 여기에 무슨이다 회사 전의 업종
. 다음은 SQL 출력의 일부입니다

SELECT COUNT(*) AS `count` FROM `jobs` AS `Job` left JOIN sectors AS `Sector` ON (`Company`.`sector_id` = 'Sector.id') LEFT JOIN `companies` AS `Company` ON (`Job`.`company_id` = `Company`.`id`) 

그것은해야한다 :

SELECT COUNT(*) AS `count` FROM `jobs` AS `Job` LEFT JOIN `companies` AS `Company` ON (`Job`.`company_id` = `Company`.`id`) left JOIN sectors AS `Sector` ON (`Company`.`sector_id` = 'Sector.id') 

나는 작업 모델 페이지를 매기는 그것은 회사의 모델이 아니라 섹터 모델 관련이있다. 그래서 섹터에 페이지 매김을해야합니다.

어떻게 해결할 수 있습니까?

+0

'$ conditions'을 먼저 외부 배열에 넣으십시오. – didierc

+0

@DIDIERC '조건'이 '조인'에 지정되지 않은 경우이 테이블에 가입 할 수 없습니다. –

+0

내가 바꿔 말하면, 바깥 쪽 배열에''joins "=> ...'앞에 조건"=> $ conditions'을 넣으십시오. 이것은 단지 추측이며, 이것이 문제의 원인인지는 모르겠지만 시도하는 데 많은 비용이 들지 않습니다. – didierc

답변

0

는 CakePHP에서의 조건이 결합 배열로 지정 안 '조인'있지만 문자열로 달리 CakePHP를는 리터럴 스트링없는 다른 모델/필드에 대한 참조만큼 'Sector.id'을 처리 할 것이다. 이

'conditions' => array('Company.sector_id = Sector.id') 

'conditions' => array('Company.sector_id' => 'Sector.id') 

을 그리고 당신의 쿼리를 확인

+0

그게 아니에요. 그건 오타 였어. 죄송합니다. –

0

내 솔루션은 부문과의 작업 모델을 결합하는 것입니다해야한다 :

그래서,이를 교체합니다.

관련 문제