我正在研究带有理论的Symfony4。 在我的存储库中,我获得了信息,但无法通过可变参数(一个用户与许多其他用户之间的距离)进行订购
public function findByThemeAndDistance($theme,$distance,$user){
$latUser=$user->getAddress()->getLnt();
$lngUser = $user->getAddress()->getLgt();
return $this->createQueryBuilder('a')
// ->select('a as activity,dist(distance) as distance' )
->join('a.author','u')
->join('u.address','add')
->andWhere('a.theme=:val')
->andWhere( '(6378 * acos(cos(radians( add.lnt)) * cos(radians(' . $latUser . ')) * cos(radians(' . $lngUser . ') - radians(add.lgt)) + sin(radians(add.lnt )) * sin(radians(' . $latUser . '))))< :distance')
->setParameter('distance', $distance)
->setParameter('val',$theme)
->orderBy('distance','ASC')
->getQuery()
->getResult()
;
}
我尝试按距离排序获得e结果,但是我得到了:
错误:预期的Doctrine \ ORM \ Query \ Lexer :: T_IDENTIFIER,得到了“ 1”,并且 当我抹掉阿拉斯时,我得到了:[语义错误]第0行,col 287在“距离ASC”附近:错误:未定义“距离”。
答案 0 :(得分:0)
由于距离字段在您的实体上不存在,因此必须通过其别名添加选择和排序
->addSelect('dist(distance) as distance')
->orderBy('distance','ASC')