我是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);
但是我找不到解决方案。 请帮忙。预先感谢。
答案 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 我希望它将对将来的人有所帮助。祝您编码愉快!