2012-03-27 5 views
0

に例外を投げる:Doctrine2は、私は以下のようにexeptionをのgettinていますSymfony2の

[Syntax Error] line 0, col 53: Error: Expected known function, got 'MONTH' 

をSymfony2の中でdoctrine2使用して、次のクエリを実行しようとしたとき:

SELECT e FROM EntityBundle:Employee e WHERE MONTH(e.dateOfJoining) = 03 order by e.name 

を私は同様のを実行しようとしたとき、

SELECT * FROM employee e WHERE MONTH(e.date_of_joining) = 03; 

phpmyadminで正常に機能しました。だから誰も私はsymfony2と同じクエリdoctrine2を実装する方法を提案することができますか?

答えて

2

registering functions with doctrineについてこの記事をお試しください。とにかく使用しないでください。列の式に基づいてフィルタリングすることは非常に非効率的です。

あなたのような何かをすることによって、オーバーヘッドなしで同じことを達成することができます -

SELECT e.* 
FROM employee e 
WHERE e.dateOfJoining BETWEEN '2012-03-01' AND '2012-03-31' 
ORDER BY e.name 

このクエリはdateOfJoining列に適用可能なインデックスを使用することができるようになります。

+0

デシベルに依存しないはるか、1 – halfer

+0

おかげnnichols、私は** ** BETWEENトリックを獲得した、というだけのMySQL DBから抽出された月で全体の日付を扱っておりませんので」仕事。 –

+1

いつでも働くことができます。あなたは正確に何をしようとしていますか? – nnichols

0

私はYEAR()と同じ問題がありました。あなたがconfig.ymlに必要な機能を追加することを忘れないでください/ソリューションは、プラグインbeberlei(作曲を経由して)インストールすることです教義2.

にDoctrineExtensions

> composer require beberlei/DoctrineExtensions "dev-master" 

が実装されていません。以下のような何か:

> doctrine: 
>  orm: 
>   dql: 
>    string_functions: 
>     MONTH: DoctrineExtensions\Query\Mysql\Month 
関連する問題