2011-10-11 52 views
4

私は、User、Project、Todoという3つのエンティティを持つWebアプリケーションを作成しています。DQLクエリと関連付け?

すべてのTodoは、Projectsと多対1の関係を持っています。 Todosには、ユーザーと多対多の関係もあります。

私がやっていることは、特定のユーザーに割り当てられたTodoを含むプロジェクトを取得することです。

私のコードは以下の通りです。私が間違っているのかについて

[Semantical Error] line 0, col 79 near 'assigned_to =': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.

任意の考え:$ idが、私は、私は次のエラーを取得するこのクエリを実行するたびに

$em = $this->getDoctrine()->getEntityManager(); 
$projects = $em->createQuery("SELECT p FROM projects p INNER JOIN p.todos t WITH t.assigned_to = :id") 
    ->setParameter('id', $id) 
    ->getResult(); 

のためのプロジェクトを取得したいのuser_idに設定されていましたか?ありがとう。

答えて

6

更新日:

をASSIGNED_TO関係など、多くの関係に多くの比較ですのための実際のフィールドASSIGNED_TOがないコメントで指摘されています。

あなたが協会に参加する必要があります:私はあまりにもサポートされており、働くかもしれないであなたから学んだように私は、に慣れている厥として

SELECT p 
FROM projects p 
INNER JOIN p.todos t 
INNER JOIN t.assigned_to a 
WHERE a.id = :id 

私は、WHERE条件を使用しています。)

+0

私は、WITH句がサポートされていることを確信しています。これは[ここ](http://www.doctrine-project.org/docs/orm/2.1/en/reference/dql-doctrine-query-language.html)に記載されているDoctrineの例の1つにあります。そして、WITH t.assigned_to =:id "'を、(WITH t.description = 'Say hi' "などの)外部キーを使用しない条件に置き換えると、クエリは正常に動作します。 –

+0

また、WHERE節を試してみて、同じ問題に遭遇しました。 –

+0

@JamesKirkwood hm ... assigned_toのマッピングは何ですか?これは複数の値または単一の値の集合ですか? – Max

関連する問題