Woj*_*ski 7 symfony doctrine-orm
我想在自定义存储库类中计算距离.问题是Doctrine在处理ACOS函数时抛出异常:
[Syntax Error] line 0, col 70: Error: Expected known function, got 'ACOS'
Run Code Online (Sandbox Code Playgroud)
这是查询:
public function findLocation($latitude, $longitude)
{
$em = $this->getEntityManager();
return $em->createQueryBuilder()
->select('((ACOS(SIN('.$latitude.' * PI() / 180) * SIN(p.latitude * PI() / 180) + COS('.$latitude.' * PI() / 180) * COS(p.latitude * PI() / 180) * COS(('.$longitude.' – p.longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance')
->from('StrictPlaceBundle:Poi', 'p')
->add('orderBy', 's.distance ASC')
->getQuery()->getResult();
}
Run Code Online (Sandbox Code Playgroud)
有什么不对?
Jak*_*las 12
DQL不支持 ACOS .您当然可以自己添加它(请参阅将自己的函数添加到DQL语言中).
此外,您需要的三角函数的MySQL实现是DoctrineExtensions的一部分: