laravel:基于lat-long从数据库获取结果

5lhxktic  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(263)

我对laravel是新手,使用的是Laravel5.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);

但我找不到解决办法。请帮忙。提前谢谢。

9rbhqvlz

9rbhqvlz1#

我找到答案了,这是问题

$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 我希望它将来能帮助别人。快乐编码!!!

相关问题