2011-10-08 48 views
1

我试图找到conditions设置为变量的国家,它看起来像这样:条件在CakePHP

$conditions = '1,2,3'; 
$this->set('options', 
    $this->Agency->Country->find('list', 
     array(
      'conditions' => array(
       'Country.zone_id' => array($conditions) 
      ) 
     ) 
    ) 
); 

这将导致找出所有与zone_id = 1或2或3

国家

但是在这种情况下,只有$conditions中的第一个值被带到一个帐户,因此在这种情况下,它的工作方式类似于Country.zone_id' => array(1)。它仅返回zone_id = 1的国家。为什么所有其他跳过?

回答

1

我认为该值被转换为int,这意味着忽略“1”后的其余值。如果提供了一个数组,那么它的行为就像SQL中的IN子句,每个数组条目都是一个要检查的值。

所以,如果你必须使用用逗号分隔每个ID字符串,然后尝试以下方法:

'conditions' => array(
    'Country.zone_id' => explode(",", $conditions) 
) 

否则,如果你已经数值ID的数组,那么你可以直接分配给它:

'conditions' => array(
    'Country.zone_id' => array(1, 2, 3), 
)  
+0

'爆炸()'完美的作品,谢谢队友。 –