Symfony2 imbricate sql请求

时间:2016-10-09 10:01:01

标签: symfony doctrine-orm

我有两个对象:员工和实现

在objet Realization中,我们归功于员工和类型。 现在,我想选择一些实现了一些实现的员工。

$sql = "SELECT DISTINCT e FROM MonBundle:Employe e WHERE e IN ( SELECT DISTINCT r.employe FROM MonBundle:Realisation r WHERE
r.type = :type)";
$query = $em->createQuery($sql);
$query->setParameter("type",$type);
  

==>错误:无效的PathExpression。必须是StateFieldPathExpression

1 个答案:

答案 0 :(得分:0)

您的实体Employe和Realization之间的关系应该是一对一的双向或一对多的双向

你可以在http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-one-bidirectional

看到它是如何运作的

有了这个,您可以访问所有具有您实体的关联数据

然后,您可以在查询中使用JOIN将Employe链接到一个或多个Realization(取决于您的2个实体之间的关系类型)并执行类似

的操作
SELECT DISTINCT e
FROM MonBundle:Employe e
JOIN e.realisation r
WHERE r.type = :type

获取具有type =?

实现的Employees列表

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#joins