我正在构建脚本以在laravel内的公里范围内搜索用户。这是我的代码:
if ($request->has('city')) {
$latitude = app('geocoder')->geocode($request->city)->get()->first()->getCoordinates()->getLatitude();
$longitude = app('geocoder')->geocode($request->city)->get()->first()->getCoordinates()->getLongitude();
$user->whereHas('user_data', function($query) use ($request, $latitude, $longitude) {
return $query->whereRaw("( 6371 * acos ( cos ( radians(".$latitude.") ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(".$longitude.") ) + sin ( radians(".$latitude.") ) * sin( radians( latitude ) ) ) <= ". $request->distance .")")->get();
});
}
但问题是我收到了错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.id' in 'where clause' (SQL: select * from `user_datas` where `user_datas`.`user_id` = `users`.`id` and ( 6371 * acos ( cos ( radians(52.406374) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(16.9251681) ) + sin ( radians(52.406374) ) * sin( radians( latitude ) ) ) <= 10))
如何修复此问题并使代码正常工作?
答案 0 :(得分:0)
怎么样......
$users = App\Users::whereRaw("( 6371 * acos ( cos ( radians(".$latitude.") ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(".$longitude.") ) + sin ( radians(".$latitude.") ) * sin( radians( latitude ) ) ) <= ". $request->distance .")")->get();