带关联的DQL查询?

时间:2011-10-11 01:52:51

标签: doctrine dql

我正在开发一个包含三个实体的webapp:User,Project和Todo。

每个Todo都与Projects有多对一的关系。 Todos还与用户建立了多对多的关系。

我要做的是检索包含已分配给给定用户的待办事项的项目。

我的代码如下。 $ id已设置为user_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();

每当我运行此查询时,我都会收到以下错误:

  

[语义错误]第0行,第79行'assigned_to ='附近:错误:无效   PathExpression。 StateFieldPathExpression或   SingleValuedAssociationField预期。

对我做错了什么的想法?感谢。

1 个答案:

答案 0 :(得分: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条件,因为我从你那里学到的东西也得到了支持,也可能有用;)