我想查看连接中的所有记录,在连接的每一侧设置 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方式执行它,因为我们已经采用了该框架 .
可能吗?
2 回答
尝试做这样的事情:
你应该看到一个SQL语句,如:
您的结果将在一个数组中
您可以在document中找到更多信息 .
我想'll accept Jose'的答案是因为它需要任何花哨的技巧 - 没有连接或包含 - 如果我使用其他模型作为我的起点 .
A
Borrower
hasMany
Loan
s和Loan
belongsTo
aBorrower
. 使用Loan
作为我的模型,Cake将自动连接表,但不使用Borrower
.