2013-06-20 43 views
0

我正在嘗試手動加入,因爲我希望獲得比CakePHP更好的查詢結果。手動加入CakePHP

這是我的控制器編碼

$this->ClinicWishList->contain(); 
$this->set('recordSets', $this->ClinicWishList->find('all', array(
    'fields' => array('ClinicWishList.*', 'ApplicantIssue.issue_desc', 'User.nickname', 'User.role'), 
    'joins' => array(
    array(
     'table' => 'applicant_issues', 
     'alias' => 'ApplicantIssue', 
     'type' => 'left outer', 
     'foreignKey' => false, 
     'conditions' => array('ClinicWishList.issue_id' => 'ApplicantIssue.id') 
    ), 
    array(
     'table' => 'users', 
     'alias' => 'User', 
     'type' => 'left outer', 
     'foreignKey' => false, 
     'conditions' => array('ApplicantIssue.user_id' => 'User.id') 
    )), 
    'conditions' => array('ClinicWishList.user_id' => $this->Auth->user('id')), 
    'order' => 'ClinicWishList.created DESC' 
))); 

CakePHP中產生這樣的SQL。

enter image description here

沒有錯誤,但我得到空的結果,從這樣的連接表。

enter image description here

我複製的SQL,並試圖在GUI工具執行,我得到這個警告。

enter image description here

如何修改CakePHP的編碼得到的SQL像

enter image description here

,而不是這個

enter image description here

請幫忙,謝謝。

回答

0

你應該改變這一行:

'conditions' => array('ClinicWishList.issue_id' => 'ApplicantIssue.id') 

到:

'conditions' => array('`ClinicWishList`.`issue_id` = `ApplicantIssue`.`id`') 

和改變這一行:

'conditions' => array('ApplicantIssue.user_id' => 'User.id') 

到:

'conditions' => array('`ApplicantIssue`.`user_id` = `User`.`id`')