使用CakePHPs find返回与条件数组匹配的所有记录

使用CakePHPs find返回与条件数组匹配的所有记录,php,mysql,arrays,cakephp,cakephp-1.3,Php,Mysql,Arrays,Cakephp,Cakephp 1.3,我目前正试图返回所有与我拥有的条件数组相匹配的记录。目前,我可以让代码正常工作,但它不是返回与我所传递的条件数组匹配的所有记录,而是返回第一个记录,然后停止,而不是我所访问的表中已知的四个记录。这是为find设置的所有参数 以下是代码片段,以便更好地查看: $array = implode(',', array('1','2','3','4')); $a = $this->Assets->find('all', array(

我目前正试图返回所有与我拥有的条件数组相匹配的记录。目前,我可以让代码正常工作,但它不是返回与我所传递的条件数组匹配的所有记录,而是返回第一个记录,然后停止,而不是我所访问的表中已知的四个记录。这是为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的记录。

这是预期结果

你是在对抗魔法。传递字符串将导致相等比较,即
其中x=y
,并且由于
id
很可能是一个整数,因此转换将字符串
1,2,3,4
转换为
1
,因此最终条件将是
其中id=1

您应该传递数组

'conditions' => array(
    'id' => array(1, 2, 3, 4) 
)
这样,ORM将在条件下生成一个
,即
其中id位于(1,2,3,4)

这也记录在食谱中:

这是预期的结果

你是在对抗魔法。传递字符串将导致相等比较,即
其中x=y
,并且由于
id
很可能是一个整数,因此转换将字符串
1,2,3,4
转换为
1
,因此最终条件将是
其中id=1

您应该传递数组

'conditions' => array(
    'id' => array(1, 2, 3, 4) 
)
这样,ORM将在
条件下生成一个
,即
其中id位于(1,2,3,4)

这也记录在食谱中:

为什么要内爆阵列?Cake应该将
array('conditions'=>array('id'=>array(1,2,3,4))
转换为
其中id位于(1,2,3,4)
您应该检查Cake生成的查询。@kai曾经在SQL语句中用于内爆字符串,认为这可能是相同的,但猜测不是。为什么要内爆数组?Cake应该将
array('conditions'=>array('id'=>array(1,2,3,4))
转换为
其中id位于(1,2,3,4)
您应该检查Cake生成的查询。@kai曾在SQL语句中用于内爆字符串,认为这可能是相同的,但猜测不是。