我正在开发一个包含三个实体的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预期。
对我做错了什么的想法?感谢。
答案 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条件,因为我从你那里学到的东西也得到了支持,也可能有用;)