我在 Symfony 3 和 Doctrine2 中有一个函数,它使用纬度和经度搜索最近的伙伴:
public function findNearestPartner($lat,$lng) {
$rsm=new ResultSetMappingBuilder($this->_em);
$rsm->addRootEntityFromClassMetadata('AppBundle\Entity\Partner','p');
$sqlQuery="SELECT p.*, (6371 * acos(cos(radians(:lat)) * cos(radians(p.latitude)) * cos(radians(p.longitude) - radians(:lng)) + sin(radians(:lat)) * sin(radians(p.latitude)))) AS distance
FROM sp_partner p
ORDER BY distance ASC
LIMIT 0,1";
$query=$this->_em
->createNativeQuery($sqlQuery,$rsm)
->setParameter('lat',$lat)
->setParameter('lng',$lng)
;
return $query->getOneOrNullResult();
}
正如您所看到的,我得到了最近的合作伙伴实体 - 但还有“距离”字段,我没有得到它(但这将非常有用)。有什么办法可以获取这个字段的值吗?
我在文档中读到(http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html),但我找不到任何对这种情况有用的东西。
你可以渡过难关addScalarResult
.
$rsm=new ResultSetMappingBuilder($this->_em);
$rsm->addRootEntityFromClassMetadata('AppBundle\Entity\Partner','p');
$rsm->addScalarResult('distance', 'distance');
结果将是
array:2 [▼
0 => Partner{...},
distance => xxx
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)