Запрос Doctrine DQL с функциями SQL

Я портирую простое веб-приложение, написанное на CodeIgniter, на пакет Symfony2. Я новичок в Symfony2 и Doctrine, и у меня проблема с одним SQL-запросом, который я хочу переписать на DQL. Я все готов к работе в своем пакете, я создал класс Entity, и я могу вставлять данные в базу данных и выполнять простые запросы в способе объектно-ориентированного программирования, который предоставляет Symfony2. К сожалению, я понятия не имею, как реализовать этот SQL-запрос в DQL:

$sql = "SELECT * FROM t WHERE 
UNIX_TIMESTAMP(t.date) > ".(time()-300)." AND
ROUND(t.x,3) = ".round($x, 3);

Как видите, есть некоторые вызовы функций SQL, которые необходимо выполнить на сервере базы данных. Доктрина не может понять эти призывы. Конечно, у меня есть возможность выйти из использования Doctrine и выполнить этот запрос, используя базовый PDO внутри моего пакета Symfony2, но я хотел бы воспользоваться всеми преимуществами использования Symfony2 и Doctrine. Поэтому я хотел бы, чтобы это было сделано с помощью ООП или с помощью умного запроса DQL, который понимает что-то вроде:

$em->createQuery("SELECT t FROM MyTestBundle:MyEntity t WHERE t.x = :x")
->setParameter("x", round($x,3));

, но возможность переписать мой SQL-запрос из старого приложения в мой новый пакет является обязательной. Пожалуйста, помогите мне найти правильное решение.

5
задан Laymain 5 March 2012 в 16:50
поделиться