2012-05-22 2 views
0

DoctrineExtensions 유용한 MySQL 기능을 구현하는 모듈을 찾았습니다. 하지만 내 문제는 일반적인 문제라고 생각합니다. 함수에 다른 mysql 표현식을 매개 변수로 전달하는 방법은 무엇입니까?Doctrine 2 QueryBuilder의 DQL - 중첩 표현식 및 함수

은 내가 DATETIMEINT입니다 lifespan는 2 열 updated_at이 있다면 나는, 내가이 작업을 수행 할 수있는 개체의 수명이 만료 된 여부를 조회하고 싶었다;

WHERE 0 > TIMESTAMPDIFF(SECONDS, NOW(), e.updated_at + INTERVAL e.lifespan SECOND) 

이 경우 QueryBuilder에서 이와 유사합니다.

$qb->andWhere('0 > TIMESTAMPDIFF(SECONDS, CURRENT_TIMESTAMP(), e.updated_at + INTERVAL e.lifespan SECOND)'); 

하지만 닫기 괄호 대신 더하기 기호를 기대하고 있기 때문에 파서는 + INTERVAL e.lifespan SECOND을 좋아하지 않는다.

답변

1

DoctrineExtensions 모듈에서 DateAdd 클래스를 사용할 수 있음을 깨달았습니다.

TIMESTAMPDIFF(SECOND, CURRENT_TIMESTAMP(), DATEADD(e.updated_at, INTERVAL e.lifespan SECOND))