Doctrine2 выбрасывает исключение в Symfony2 - PullRequest
0 голосов
/ 27 марта 2012

Я получаю исключение, как показано ниже:

[Syntax Error] line 0, col 53: Error: Expected known function, got 'MONTH'

при попытке выполнить следующий запрос с использованием doctrine2 в symfony2:

SELECT e FROM EntityBundle:Employee e  WHERE MONTH(e.dateOfJoining) = 03 order by e.name

, когда я пытался выполнить аналогичный запрос какпоказано ниже:

SELECT * FROM employee e WHERE MONTH(e.date_of_joining) = 03;

все работало нормально в phpmyadmin.Так может кто-нибудь предложить, как я могу реализовать тот же запрос doctrine2 с Symfony2?

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Попробуйте прочитать эту статью о регистрации функций с помощью доктрины , но вам все равно не следует ее использовать.Очень неэффективно фильтровать по выражению в столбце.

Вы можете достичь того же самого без лишних затрат, выполнив что-то вроде -

SELECT e.*
FROM employee e
WHERE e.dateOfJoining BETWEEN '2012-03-01' AND '2012-03-31'
ORDER BY e.name

Этот запрос сможет использовать любойприменимый индекс в столбце dateOfJoining.

0 голосов
/ 29 октября 2014

У меня была такая же проблема с ГОДОМ ().Это не реализовано в Doctrine 2.

Решение состоит в том, чтобы установить (через Composer) плагин beberlei / DoctrineExtensions

> composer require beberlei/DoctrineExtensions "dev-master"

Не забудьте добавить нужную вам функцию в конфигурации.yml.Что-то вроде:

> doctrine:
>     orm:
>         dql:
>             string_functions:
>                 MONTH: DoctrineExtensions\Query\Mysql\Month
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...