我正在尝试进行手动联接,因为我希望获得比 CakePHP 更好的查询结果。
这是我的 Controller 的编码
$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。
没有错误,但我从连接表中得到了空结果,如下所示。
我复制了 SQL 并尝试在 GUI 工具上执行,收到此警告。
如何修改 CakePHP 中的代码以获得类似的 SQL
而不是这个
请帮忙,谢谢。
最佳答案
您应该更改此行:
'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`')
关于mysql - CakePHP 上的手动 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17212047/