poner - primer dia del mes mysql
¿Cómo puedo usar el AÑO(), el MES() y el DÍA() de SQL en Doctrine2? (2)
Quiero realizar una consulta que se vería así en SQL nativo:
SELECT
AVG(t.column) AS average_value
FROM
table t
WHERE
YEAR(t.timestamp) = 2013 AND
MONTH(t.timestamp) = 09 AND
DAY(t.timestamp) = 16 AND
t.somethingelse LIKE ''somethingelse''
GROUP BY
t.somethingelse;
Si estoy tratando de implementar esto en el generador de consultas de Doctrine de esta manera:
$qb = $this->getDoctrine()->createQueryBuilder();
$qb->select(''e.column AS average_value'')
->from(''MyBundle:MyEntity'', ''e'')
->where(''YEAR(e.timestamp) = 2013'')
->andWhere(''MONTH(e.timestamp) = 09'')
->andWhere(''DAY(e.timestamp) = 16'')
->andWhere(''u.somethingelse LIKE somethingelse'')
->groupBy(''somethingelse'');
Me sale la excepción de error
[Error de sintaxis] línea 0, columna 63: Error: Se esperaba una función conocida, se obtuvo ''AÑO''
¿Cómo puedo implementar mi consulta con el generador de consultas de Doctrines?
Notas:
- Sé sobre el SQL nativo de Doctrine . He intentado esto, pero lleva al problema de que mis tablas de base de datos productivas y de desarrollo tienen nombres diferentes. Quiero trabajar en una base de datos independiente, por lo que esta no es una opción.
- Aunque quiero trabajar db agnóstico: FYI, estoy usando MySQL.
- Hay una forma de extender Doctrine para "aprender" las declaraciones de
YEAR()
etc., por ejemplo, como se ve aquí . Pero estoy buscando una manera de evitar la inclusión de complementos de terceros.
Puedes agregar la extensión Doctrine para que puedas usar la declaración de MySQL YEAR
Y MONTH
agregando esta configuración si estás en Symfony:
doctrine:
orm:
dql:
string_functions:
MONTH: DoctrineExtensions/Query/Mysql/Month
YEAR: DoctrineExtensions/Query/Mysql/Year
ahora puede usar las declaraciones MES y AÑO en su DQL o en el generador de consultas.
orocrm/doctrine-extensions parece ser un buen proyecto también
Es compatible con MySQL y PostgreSql . El objetivo es cruzar la base de datos.