有人可以帮我正确编写这个查询吗?
我有一个Concert
模型和另一个Location
模型。 Concert属于位置。位置表具有空间点字段。
我需要做三件事:
- 按距离从用户位置排序
- 显示与用户位置的距离
- 获取用户位置一定距离内的音乐会
到目前为止,我已经成功设置了数据库,并获得了用户一定距离内的音乐会:
$condition = ($lat != null && $lon != null && $distance != null);
Concert::when($condition, function ($query) use ($distance,$lat,$lon) {
return $query->whereHas('location', function($query) use ($distance,$lat,$lon) {
$query->whereRaw('st_distance(location,POINT('.$lat.','.$lon.')) < '.$distance);
});
})
->get();
你能帮我如何在视图中显示st_distance
吗?
我该如何按距离排序?
获取$distance
以英里/千米为单位的正确方法是什么?因为我在文档中看到st_distance
是以度数给出的。