使用CakePHP查找返回所有符合条件数组的记录

时间:2014-05-09 16:05:43

标签: php mysql arrays cakephp cakephp-1.3

我目前正在尝试返回符合我所拥有的一系列条件的所有记录。目前我可以让我的代码工作,但不是返回所有匹配我已经通过的条件数组的记录,而是返回第一个然后停止,而不是我知道存在于表中的四个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的记录时。

1 个答案:

答案 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