我试图找到将conditions
设置为变量的国家,如下所示:
$conditions = '1,2,3';
$this->set('options',
$this->Agency->Country->find('list',
array(
'conditions' => array(
'Country.zone_id' => array($conditions)
)
)
)
);
这将导致找到所有id为1或2或3的国家。
但在这种情况下,只有
$conditions
中的第一个值被考虑到一个帐户中,所以在这种情况下,它的工作方式类似于Country.zone_id' => array(1)
。它只返回区域id=1的国家。为什么其他的都被跳过了? 最佳答案
我认为这个值被转换成一个int
的值,这意味着“1”之后的剩余部分被忽略。如果提供了一个数组,那么它的行为就像SQL中的IN
子句,每个数组条目都是要检查的值。
因此,如果必须使用一个字符串,每个ID用逗号分隔,请尝试以下操作:
'conditions' => array(
'Country.zone_id' => explode(",", $conditions)
)
否则,如果您已经有一个数字ID数组,那么您可以直接分配它:
'conditions' => array(
'Country.zone_id' => array(1, 2, 3),
)