2011-10-08 3 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

값이 "1"을 무시한 후에 나머지를 의미하는 int으로 변환된다고 생각합니다. 배열이 제공되면 검사 할 값으로 각 배열 항목을 사용하여 SQL에서 IN 절처럼 작동합니다. 당신이 숫자 ID의 이미 배열이있는 경우 다음 직접 지정할 수 있습니다 그렇지 않으면

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

: 쉼표로 구분 ID 문자열을 사용하는 경우

그래서 다음을 시도

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

'explode()'가 완벽하게 작동합니다. 감사합니다. –