带关联的DQL查询?

Jam*_*ood 4 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();
Run Code Online (Sandbox Code Playgroud)

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

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

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

Max*_*Max 6

更新:

由于assigned_to关系是注释中指出的多对多关系,因此没有实际的字段assign_to用于比较.

你必须加入协会:

SELECT p 
FROM projects p 
INNER JOIN p.todos t 
INNER JOIN t.assigned_to a
WHERE a.id = :id
Run Code Online (Sandbox Code Playgroud)

我正在使用WHERE条件,因为我从你那里学到的东西也得到了支持,也可能有用;)