2012-06-14 13 views
5

選択期間を入力期間で割ったテーブルから選択しようとすると、余りがありません。doctrine2 query builderで演算子を追加する方法whereステートメント

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

これはエラーを返します:

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

これはプレーンなSQLに働くだろう。誰かがDoctrineのクエリビルダーでこれを行う方法を知っていますか?

+0

正解ですか。 – sensorario

答えて

9

記号%は、DQL演算子ではありません。

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

するか、これを読んで:これを試してみてくださいhttp://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-language.html 12.5.1段落を。

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

提案していただきありがとうございますが、modはクエリでは機能しませんでした。私は再びドキュメンテーションを見ていますが、モジュラスは表示されず、whereステートメント内での計算も示されません。私は探し続ける必要がありますが、良い考えです。 – Apot

+1

あなたは天才です。 MOS(a、b)は魅力的に働いた。本当にありがとう! – Apot

+0

この回答に正しいと署名できますか? – sensorario

関連する問題