Некоторые функции MySQL Date зависят от платформы, а Doctrine - это абстракция для нескольких платформ.Вот почему они не поддерживают, например, функцию YEAR()
из коробки.Вы можете написать свою собственную логику или использовать beberlei / DoctrineExtensions , чтобы добавить эти и другие специфичные для mysql возможности в вашу настройку.Установите пакет и затем в своей конфигурации доктрины в config.yml добавьте новые типы dql, сопоставив имя функции с соответствующим классом, например:
doctrine:
orm:
dql:
datetime_functions:
date: DoctrineExtensions\Query\Mysql\Date
...
или используйте файл конфигурации избиблиотека .
После этого вы можете написать запрос для преобразования текущей даты и даты в вашей таблице в год и сравнить их следующим образом:
->where('YEAR(i.interventionDate) = YEAR(CURRENT_DATE())');