2013-02-22 60 views
0

我想加入「分區」表以達到分頁結果。這是發生了什麼:Cakephp與連接表分頁

我設置PAGINATE變量,以便它會加入行業:

$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'); 

由分頁程序生成的查詢被損壞,因爲它加入部門前公司。 這裏是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 2013-02-22 22:02:42

+0

@DIDIERC沒有'連接'中指定的'條件'我將無法加入此表。 – 2013-02-22 22:13:10

+0

讓我改述一下:試着把'「conditions」=> $ conditions'放在外層數組中的'「joins」=> ...之前。請注意,這只是一個猜測,我不知道這是否是您的問題的根源,但嘗試不會花費太多。 – didierc 2013-02-22 22:50:59

回答

0

「聯接」 CakePHP中條件不應該被指定作爲一個關聯數組,但作爲一個字符串,否則CakePHP會處理「Sector.id」作爲文字串不作爲對其他型號/場的參考。

所以,更換此:

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

有了這個

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

和您的查詢應該是確定

+0

沒有那不關。那是一個錯字。抱歉。 – 2013-02-23 00:59:02

0

我的解決辦法是參加就業模型的部門。