Symfony2 Doctrineクエリ

私はsymfony2の新機能ですが、symfony2でcreateQuery()を使用して以下のクエリを書く方法を知らない

select * from Post inner join Category on Post.category_id=Category.id inner join Priority on Post.priority_id=Priority.id order by priority_number desc

私は、リポジトリクラスを使用して、関数を書いた

public function findAllOrderedByPriorityPost()
    {

        return $this->getEntityManager()
                ->createQuery('select p,c,pr from RodasysfourmBundle:Post p inner join 
RodasysfourmBundle:Category c  inner join RodasysfourmBundle:Priority pr order by pr.priorityNumber desc')
                ->getResult();
    }

この関数を使用したとき、私は以下のエラーを受け取りました

[Semantical Error] line 0, col 85 near 'c inner join': Error: Identification Variable RodasysfourmBundle:Category used in join path expression but was not defined before. 

また、カスタムリポジトリまたはサービスとしてこのクエリを使用するのが最適な方法は何ですか?

どんな助けもありがたい。

12

2 答え

doctrine2のDQLは、参照先のエンティティの名前を指定した場合、テーブルを結合する方法を知らないでしょう。 1つのエンティティとそのフィールド(リレーションを持つ可能性があります)だけで作業できます。

select p,c,pr from RodasysfourmBundle:Post p inner join 
p.Category c inner join c.Priority pr order by pr.priorityNumber desc
9
追加された
0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com