0

안녕하세요, zend2와 같은 쿼리를 어떻게 할 수 있습니까?Zend Db Sql Where

검색어 : ZF2가 배열 될 필요가 없습니다, 그래서 거기에 어떤 매개 변수가 없습니다

$select = $this->sql->select(); 
$select->from(self::MYTABLE) 
      ->where(array('fiels' => $field)) 
      ->where(array('data > ' => 'SUBDATE(NOW(), INTERVAL '.$lifetime.' SECOND')); 
$statement = $this->sql->prepareStatementForSqlObject($select); 
return $statement->execute()->current(); 
+2

['Zend \ Db \ Sql \ Predicate \ Expression']을 사용하여' 'data'=> 새로운 표현식 ('SUBDATE (......)')을 시도하십시오. (https://github.com/zendframework/zf2//blob/master/library/Zend/Db/Sql/Predicate/Expression.php#L14) – Sam

+0

작동하지 않습니다 : ( –

+0

그러면 '(new expression ('data> SUBDATE (...) '))'- Zend \ Db에서 너무 안전하지 않다. - 게으른 교리이다. D – Sam

답변

0

변화 라인

->where(array('data > ' => 'SUBDATE(NOW(), INTERVAL '.$lifetime.' SECOND')); 

코드 조각에서

->where(array('data > ?' => 'SUBDATE(NOW(), INTERVAL '.$lifetime.' SECOND')); 

에, 당신이 장소를 놓쳤다 볼 것 매개 변수 (?) 홀더, 물음표 포함, 빠른 참조를 위해 기존 코드 줄과 수정 된 코드를 언급했습니다.

+0

해결책을 제시하는 대신 질문에 대답 할 때 문제의 이유를 제시해주십시오. 예를 들어 왜 그 문에 물음표를 추가해야합니까? – edigu

0

에서

SELECT * FROM table WHERE field = $field AND data > SUBDATE(NOW(), INTERVAL 1 DAY) 

. 당신이 $lifetime이 안전하고 정수 값을 알고 가정하면, 시도 :

->where('data > SUBDATE(NOW(), INTERVAL '.$lifetime.' SECOND)');