У меня возникла проблема с созданием "простого" запроса с помощью Doctrine QueryBuilder. Я пытаюсь получить несколько «лиц», которые находятся на расстоянии не более 10 км.
Мой запрос:
$QB = $this->createQueryBuilder('p');
$QB->add('select', 'p')
->add('from', 'MyProject\Bundle\FrontBundle\Entity\Pro p')
->where('p.job = :job')
->andWhere('(3956 * 2 * ASIN(SQRT( POWER(SIN((:latitude - abs(pro.latitude)) * pi()/180 / 2),2) + COS(:latitude * pi()/180 ) * COS(abs(pro.latitude) * pi()/180) * POWER(SIN((:longitude - pro.longitude) * pi()/180 / 2), 2) ))) <= 10')
->addOrderBy('p.dateCreation', 'DESC')
->addOrderBy('p.id', 'DESC')
->setParameter('latitude', $latitude)
->setParameter('longitude', $longitude)
->setParameter('job', $jobId);
Проблема заключается во втором утверждении «где», Doctrine не работает с «ASIN» из-за следующей скобки. Он пытается выполнить функцию... Есть ли способ избежать этого? Или другой способ построить это условие?
Спасибо за профессиональную доктрину ;)