2013-06-20 47 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`')