【发布时间】:2014-04-17 10:11:06
【问题描述】:
我在使用 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);
问题出在第二个“where”语句上,由于后面的括号,Doctrine 在“ASIN”上失败了。它试图执行函数...... 有没有办法逃脱呢?或者另一种构造这个条件的方法?
感谢 Doctrine 专业人士 ;)
【问题讨论】:
标签: postgresql symfony doctrine-orm query-builder