Laravel:基于纬度从数据库获取结果

时间:2018-11-26 11:03:45

标签: php mysql sql laravel

我是laravel的新用户,并且使用laravel 5.6,并且正在使用API​​。在API结果中,我希望所有处于分页购买者半径50英里范围内的卖方。 到目前为止,这是我尝试过的:

$lat = Auth::user()->latitude;
$long = Auth::user()->longitude;
$products = DB::table('products')
                ->select(DB::raw('title, ( 
                        6371 * acos( cos( radians({$lat}) 
                    ) * cos( 
                        radians( `latitude` ) 
                    ) * cos( 
                        radians( `longitude` ) - radians({$long}) 
                    ) + sin( 
                        radians({$lat}) 
                    ) * sin( radians( `latitude` ) ) 
                ) 
            ) AS distance'))
            ->where('distance', '<', 50)
            ->paginate(20);

var_dump($products);

但是我找不到解决方案。 请帮忙。预先感谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,这是查询

$lat = Auth::user()->latitude;
        $long = Auth::user()->longitude;
        $products = Products::selectRaw('id, title, (
    3959 * acos (
      cos ( radians(30.7062683) )
      * cos( radians( latitude ) )
      * cos( radians( longitude ) - radians(76.7165878) )
      + sin ( radians(30.7062683) )
      * sin( radians( latitude ) )
    )
  ) AS distance')->orderBy('distance')->having('distance', '<', 100)->paginate(50);
        var_dump($products);

,然后安装并遵循此软件包。我会帮你的 https://github.com/justbetter/laravel-pagination-with-havings 我希望它将对将来的人有所帮助。祝您编码愉快!