mysql - CakePHP 上的手动 JOIN

标签 mysql cakephp cakephp-2.0 cakephp-model

我正在尝试进行手动联接,因为我希望获得比 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。

enter image description here

没有错误,但我从连接表中得到了空结果,如下所示。

enter image description here

我复制了 SQL 并尝试在 GUI 工具上执行,收到此警告。

enter image description here

如何修改 CakePHP 中的代码以获得类似的 SQL

enter image description here

而不是这个

enter image description here

请帮忙,谢谢。

最佳答案

您应该更改此行:

'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/

相关文章:

MySQL 给出错误 1436,然后是 1062

linux - 自动从临时文件夹 [CakePHP] 中删除文件

authentication - CakePHP 2,如何使用纯文本密码进行 AuthComponent::login() ?

php - 在 CakePHP 中将斜杠参数传递给 requestAction

php - Mysql 在使用带有 SUM 方法和 if 条件的多个联接时出错?

javascript - 如何将div数据提交给MySQL

php - 使用php从数据库列中删除逗号分隔值的函数

css - 单选按钮和标签 Cakephp 之间的空间

database - CakePHP - 如何将翻译行为应用于现有数据库?

php - CakePHP:在 HABTM 中保存数据的正确格式是什么