Doctrine 2.1では、モデル定義で直接行うことができますが、@OrderByではできません。で述べたようにあなたは、モデルレベルでDQLスニペットを定義することができ2.1 Beta release notes:
メタデータでDQLクエリ名前:あなたは@NamedQueriesを使用してマッピングファイル(@NamedQuery(名前=「foo」という中でDQLクエリを追加することができ、クエリ= "DQL"))、$ em-> getRepository() - > getNamedQuery()でアクセスします。
そのようにあなたは、キーワードBY ORDERで何かあなたのDQLクエリを作成することができます。
/**
* @Entity
* @Table(name="comment")
* @NamedQueries(@NamedQuery(name="sortedComment", query="SELECT c.id, c.text, (c.voted_up/c.voted_down) AS sortkey FROM Comment c ORDER BY sortkey DESC"))
*/
class Comment {
...
}
:だから
SELECT c.id, c.text, (c.voted_up/c.voted_down) AS sortkey FROM Comment c
ORDER BY sortkey DESC
を、私は、あなたがモデル定義にこの注釈を追加するようなものを想像します
そして、あなたのコードの呼び出しに:
$em->getRepository("Comment")->getNamedQuery("sortedComment");
私は目をテストしていませんしかし、あなたは考えを得る。
名前として「voted_up/voted_down」というフィールド名を真剣に使用していますか?私は批評家になりたくありません。しかし、私はそれが何らかのabobinationだと思う。 – renoirb
申し訳ありません。明確にするために、それは計算です。 "voted_up"はintフィールド、 "voted_down"はintフィールドです。 – iamdev