我想查看连接的所有记录,并在连接的每一侧设置WHERE
条件。CakePHP在每个表上查找条件相连的记录
例如,我有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方法来完成。
可能吗?