2012-12-06 6 views
-2

제출 된 양식에서 다른 수의 ID를 사용하여 Doctrine 쿼리를 만들 수 있습니까? 그리고 그렇다면 어떻게?다른 수의 id를 사용하여 Doctrine 쿼리 만들기

.... 

if ($input->isValid()) { 

$q = Doctrine_Query::create() 
       ->from('Imm_Model_Images i') 
       ->whereIn('i.ImageID = ?', array($input->ids)); 

$result = $q->fetchArray(); 

PS :

는 내가 뭘하려고 이것이다 식별자는 [] IDS와 같은 배열의 제출 양식을 형성 온다.

추가 편집 :

->whereIn('i.ImageID = ?', array($input->ids)); 

과 :

위의 라인 chaged

->whereIn('i.ImageID = array($input->ids)'); 

을 ... 그리고 작동하는 것 같다.

+0

id가 배열에 있으면, '-> whereIn ('i.ImageID ', $ input-> ids); 만 사용해야합니다. 'whereIn'을 사용할 때 배열을 설정하기 위해'=? '을 사용할 필요가 없습니다. 이것이 물음표보다 변수가 많았던 원인입니다. – jaudette

+0

매개 변수를 사용할 때 Doctrine은 일부 정리를 수행하고 SQL 오류/예외가 발생하지 않도록합니다. 이것이 이것이 바람직한 방식 인 이유입니다. – jaudette

답변

1

DQL에는 in 연산자가 있습니다 (documentation 참조).

그것은과 같이 보일 것이다 : 교리에서 whereIn 기능으로

$q = Doctrine_Query::create() 
    ->from('User u') 
    ->whereIn('u.id', $arrayOfReturnedValues); 

을, 당신은 = ? 자리를 보낼 필요가 없습니다. 필드의 이름과 관련 값을 배열에 지정하기 만하면됩니다.

+0

whereind Zend FW를 사용하면 다음 오류가 발생합니다. 하나 이상의 ID를 선택합니다. SQLSTATE [HY093] : 잘못된 매개 변수 번호 : 바인딩 된 변수의 수가 토큰 수와 일치하지 않습니다. – frapet

+0

@frapet none을 선택하면 오류가 발생합니다 , 또는 항상? – jaudette

+0

예. 동일한 오류가 있습니다. – frapet

관련 문제