2012-06-14 16 views
5

Im tratando de seleccionar de una tabla donde la duración seleccionada dividida por la duración de la entrada es igual a no tiene resto.Cómo agregar operadores en el generador de consultas doctrine2 donde instrucción

$qb = $em->createQueryBuilder() 
->from('AcmeBlogBundle:Entry', 'e') 
->andWhere(":duration % e.duration = 0") 
->setParameter('duration', $duration); 

Esto devuelve el error:

[Syntax Error] line 0, col 226: Error: Expected =, <, <=, <>, >, >=, !=, got '%' 

esto funcionaría en SQL sin formato. ¿Alguien sabe cómo hacer esto con el generador de consultas de Doctrine?

+0

¿Es la respuesta correcta? – sensorario

Respuesta

9

El símbolo % no es un operador DQL. Prueba esto:

$qb = $em->createQueryBuilder() 
->from('AcmeBlogBundle:Entry', 'e') 
->andWhere("mod(:duration,e.duration) = 0") 
->setParameter('duration', $duration); 

O leer esto: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-language.html La 12.5.1 párrafo.

MOD(a, b) - Return a MOD b. 
+0

Gracias por la sugerencia, pero mod no funcionó en la consulta. Estoy mirando la documentación de nuevo y no muestra el módulo y ni siquiera indica ningún cálculo dentro de las instrucciones where. Tendré que seguir buscando, pero buena idea. – Apot

+1

Eres un genio. MOS (a, b) funcionaba como un encanto. ¡Muchas gracias! – Apot

+0

¿Puede firmar esta respuesta como correcta si lo es? – sensorario

Cuestiones relacionadas