我的DQL查询仅返回FROM对象,如果其他对象相关,则很好,但不是。
我的查询:
$query = $this->em->createQuery('SELECT c, s FROM MyBundle:Person c, MyBundle:Spot s
JOIN s.geo_data g JOIN g.features f WHERE f.active = true AND
ST_Distance(f.location, c.location) < :distance GROUP BY c, s');
这在SQL中非常有效,给了我所有景点以及位于他们之间的所有人:距离。但是在DQL中,它仅返回人员对象,并且由于在数据库级别上它们不相关,因此我无法获取正确的位置。
我的数据库设置正确,我使用的是PostGIS后端,并且地点和人员没有任何关系。它们恰好在同一张地图上,我正在查询空间关系。
根据文档,从我的阅读来看,这是预期的行为,s正在被水合,但根本没有返回,很好!
我该如何教DQL退还我在SELECT中告诉我的内容?“我的意思是,别再成为聪明人”开关在哪里?
如果它们不相关,则教义不能给您两个实体,因为如果两个实体相关,则您将获得第一个实体c,而您可以通过该关系得到s。
您可以尝试选择两个实体的所有字段,例如
SELECT c.location, ..., s.geo_data, ...
这将为每个列提供一个数组,其中包含两个实体的所有字段。如果需要,也许您可以使用结果集映射来获取实体。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句