2013-11-21 3 views
0

배열에서 가져 오는 매개 변수를 기반으로 doctrine 쿼리 작성 도구를 사용하여 쿼리를 작성하려고합니다.zend framework 2 및 doctrine 쿼리 작성 도구

여기 내 배열의,

$query = array('field' => 'number, 
          'from' => '1', 
           'to' => '100', 
            'Id' => '2', 
             'Decimation' => '10' 
          ); 

내가 쓰기 위해 노력하고 있어요 쿼리는, 내가 지금 어디에 서

여기 select * from table where (number between 1 AND 100) AND (Id = 2) AND number mod 10 = 0

이야,

if (is_array($parameters['query'])) { 
     $queryBuilder->select() 
         ->where(
           $queryBuilder->expr()->between($parameters['query']['field'], $parameters['query']['from'], $parameters['query']['to']), 
           $queryBuilder->expr()->eq('Id', '=?1'), 
           $queryBuilder->expr()->eq($parameters['query']['field'],'mod 10 = 0') 
          ) 
        ->setParameter(array(1 => $parameters['query']['Id'])); 
    } 

난 웬일인지 내 머리를 감쌀 수 없다. 도와주세요 !! 누군가?

답변

1

시험 또는 아무것도, 그냥 직접 SO 상자에 대답에 입력되지 않음 :

$queryBuilder->select('table') 
    ->from('My\Table\Entity', 'table') 
    ->where($queryBuilder->expr()->andX(
     $queryBuilder->expr()->between('table.number', ':from', ':to'), 
     $queryBuilder->expr()->eq->('table.id', ':id'), 
    )) 
    ->andWhere('MOD(table.number, :decimation) = 0') 
    ->setParameters(array(
     'from' => $parameters['query']['from'], 
     'to' => $parameters['query']['to'], 
     'id' => $parameters['query']['id'], 
     'decimation' => $parameters['query']['decimation'] 
    )); 

동적으로 당신이 WHERE 조건을 적용 할 필드 설정할 수 없습니다. 그러나 허용하려는 값을 허용 목록에 추가하지 않는 것이 가장 좋은 방법입니다. 위의 코드를 간단하게 수정하면 (table.number 문자열에 number 대신 값을 삽입하면됩니다.)

0

내가 좀 그것을 가지고,

여기에 주요 아이디어는 andWhere 절을 사용하는 것이 었습니다. 여러 조항이 내가 원한 곳이었습니다. 그리고 교리가주는 mod 연산자. 꽤 잘했습니다. 요구 사항도 변경되었습니다.

+1

정확히 설명하는 내 대답을 확인 했습니까? – Tomdarkness