2012-06-14 28 views
5

Cố gắng chọn từ một bảng trong đó thời lượng đã chọn chia cho khoảng thời gian nhập bằng không còn lại.Cách thêm toán tử vào trình tạo truy vấn doctrine2 trong đó tuyên bố

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

này trả về lỗi:

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

này sẽ làm việc trong SQL đơn giản. Có ai biết cách làm điều này với trình xây dựng truy vấn của Doctrine không?

+0

Câu trả lời đúng? – sensorario

Trả lời

9

Biểu tượng % không phải là toán tử DQL. Hãy thử điều này:

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

Hoặc đọc: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-language.html Đoạn 12.5.1 này.

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

Cảm ơn đề xuất nhưng mod không hoạt động trong truy vấn. Tôi đang nhìn vào tài liệu một lần nữa và nó không liệt kê modulus và thậm chí không chỉ ra bất kỳ phép tính nào trong các câu lệnh where. Tôi sẽ phải tiếp tục tìm kiếm, nhưng ý tưởng hay. – Apot

+1

Bạn là một thiên tài. MOS (a, b) làm việc như một say mê. Cảm ơn bạn rất nhiều! – Apot

+0

Bạn có thể ký câu trả lời này đúng nếu đúng không? – sensorario

Các vấn đề liên quan