我目前正在尝试返回与我拥有的条件数组匹配的所有记录。目前我可以让我的代码工作,但不是返回所有的记录匹配的数组条件,我已经传递,它只返回第一个,然后停止,而不是四个,我知道存在于我正在访问的表。这是为find设置的all参数。
下面是一个更好的视图代码片段: $array = implode(',', array('1','2','3','4'));
$a = $this->Assets->find('all', array(
'conditions' => array(
'id' => $array
)
)
);
var_dump($a);
var_dump $a将只提供id为1的记录,而同时存在id为2、3和4的记录。
这就是预期的结果。
你正在对抗orm的自动魔法。传递一个字符串将导致一个相等比较,即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