我目前正在尝试返回符合我所拥有的一系列条件的所有记录。目前我可以让我的代码工作,但不是返回所有匹配我已经通过的条件数组的记录,而是返回第一个然后停止,而不是我知道存在于表中的四个I'访问。这是为find设置的所有参数。
以下是更好观点的代码段:
$array = implode(',', array('1','2','3','4'));
$a = $this->Assets->find('all', array(
'conditions' => array(
'id' => $array
)
)
);
var_dump($a);
var_dumping $ a只会提供id为1的记录,当存在2,3和4的记录时。
答案 0 :(得分:4)
这是预期的结果。
你正在反对ORMs自动魔法。传递一个字符串将导致相等比较,即WHERE x = y
,并且因为id
很可能是一个整数,所以转换会将字符串1,2,3,4
转换为1
,因此最终条件为WHERE id = 1
。
你应该传递数组
'conditions' => array(
'id' => array(1, 2, 3, 4)
)
ORM会以这种方式生成IN
条件,即WHERE id IN (1,2,3,4)
。
这也记录在食谱中:
的 http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#complex-find-conditions 强>