【发布时间】:2013-04-29 18:30:16
【问题描述】:
我想查看连接中的所有记录,在连接的每一侧设置WHERE 条件。
例如,我有LOAN 和BORROWER(加入borrower.id = loan.borrower_id)。我想要 LOAN.field = 123 和 BORROWER.field = 'abc' 的记录。
这里的答案(例如this one)似乎说我应该使用 Containable。
我试过了。这是我的代码:
$stuff = $this->Borrower->find('all', array(
'conditions' => array(
'Borrower.email LIKE' => $this->request->data['email'] // 'abc'
),
'contain'=>array(
'Loan' => array(
'conditions' => array('Loan.id' => $this->request->data['loanNumber']) // 123
)
)
));
我希望得到一个结果,因为在我的数据中,只有一条连接记录同时满足这两种条件。相反,我得到两个结果,
结果 1 是 {Borrower: {field:abc, LOAN: {field: 123} } // 正确
结果 2 是 {Borrower: {field:abc, LOAN: {NULL} } // 不正确
当我查看 CakePHP 使用的 SQL 时,我没有看到连接。我看到的是两个单独的查询:
查询1:SELECT * from BORROWER // (yielding 2 IDs),
查询 2:SELECT * FROM LOAN WHERE borrower_id in (IDs)
这不是我想要的。我想加入表格,然后应用我的条件。我可以轻松编写 SQL 查询,但由于我们采用了该框架,因此我尝试以 Cake 的方式进行。
有可能吗?
【问题讨论】:
标签: cakephp join cakephp-2.0