2012-06-14 13 views
5

Próbuję wybrać z tabeli, w której wybrany czas trwania podzielony przez czas trwania wpisu jest równy, nie ma reszty.Jak dodać operatorów do konstruktora kwerend doctrine2 gdzie instrukcja

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

ta zwraca błąd:

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

to będzie działać w czystym SQL. Czy ktokolwiek wie, jak to zrobić za pomocą kreatora zapytań Doctrine?

+0

Czy poprawna odpowiedź? – sensorario

Odpowiedz

9

Symbol % nie jest operatorem DQL. Spróbuj tego:

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

Albo przeczytać: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-language.html 12.5.1 pkt.

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

Dzięki za sugestię, ale mod nie zadziałał w zapytaniu. Ponownie sprawdzam dokumentację i nie wyszczególnia ona modułu i nie wskazuje nawet żadnych obliczeń w instrukcjach where. Będę musiał dalej szukać, ale dobry pomysł. – Apot

+1

Jesteś geniuszem. MOS (a, b) działał jak urok. Dziękuję bardzo! – Apot

+0

Czy możesz podpisać tę odpowiedź jako poprawną, jeśli tak jest? – sensorario

Powiązane problemy