我想查看连接中的所有记录,在连接的WHERE
每一侧设置条件。
例如,我有LOAN
和BORROWER
(加入borrower.id = loan.borrower_id
)。我想要 LOAN.field = 123 和BORROWER.field = 'abc'
.
这里的答案(例如这个)似乎说我应该使用 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 的方式进行。
是否可以?