我正在寻找特定点周围的距离。
我的数据库中有这些项目,带有纬度和经度。
我想获取它周围指定半径内的所有结果。
这就是我得到它的方式:
$lat = '51,3';
$long = '4,3';
$radius = '5';
$hamsters = Hamster::select(
DB::raw("*,
( 6371 * acos( cos( radians(?) ) *
cos( radians( lat ) )
* cos( radians( long ) - radians(?)
) + sin( radians(?) ) *
sin( radians( lat ) ) )
) AS distance"))
->having("distance", "<", "?")
->orderBy("distance")
->setBindings([$lat, $long, $lat, $radius])
->get();
现在它给了我一个错误:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'long ) - radians(?) ) + sin( radians(?) ) * ' at line 4 (SQL: select *, ( 6371 * acos( cos( radians(51,3) ) * cos( radians( lat ) ) * cos( radians( long ) - radians(4,3) ) + sin( radians(51,3) ) * sin( radians( lat ) ) ) ) AS distance from
hamsters
havingdistance
< 5 order bydistance
asc)
有人有办法解决这个问题吗?
最佳答案
Long是mysql中的保留关键字source
您必须在与解决方法共享相同名称的任何标签周围使用反引号 (`)。
关于php - laravel sql 查询中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26873186/