这是我的塞纳里奥:
我在mysql数据库中保存了商店的详细信息。
店名,纬度,经度,
现在如果有人给出了他在经纬度上的位置和距离(比如5公里),我需要把5公里范围内的所有商店都填满,
在这里,用户是中心,半径是5公里,我需要找到这个圈子内的所有商店,我的应用程序是在Laravel 5.1中开发的
我试着跟着这个,但没用。
有人能帮我吗?
最佳答案
您可以在模型中添加以下代码
public function ScopeDistance($query,$from_latitude,$from_longitude,$distance)
{
// This will calculate the distance in km
// if you want in miles use 3959 instead of 6371
$raw = \DB::raw('ROUND ( ( 6371 * acos( cos( radians('.$from_latitude.') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('.$from_longitude.') ) + sin( radians('.$from_latitude.') ) * sin( radians( latitude ) ) ) ) ) AS distance');
return $query->select('*')->addSelect($raw)->orderBy( 'distance', 'ASC' )->groupBy('distance')->having('distance', '<=', $distance);
}
你可以把它和这样的东西一起用
$ads = Ad::with(['user','photos'])->distance($from_latitude,$from_longitude,$distance)->get();