使用CakePHPs find返回与条件数组匹配的所有记录
我目前正试图返回所有与我拥有的条件数组相匹配的记录。目前,我可以让代码正常工作,但它不是返回与我所传递的条件数组匹配的所有记录,而是返回第一个记录,然后停止,而不是我所访问的表中已知的四个记录。这是为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(
$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语句中用于内爆字符串,认为这可能是相同的,但猜测不是。