我正在构建脚本以搜索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))


如何修复此问题并使代码正常工作?

最佳答案

怎么样...

$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();

关于php - 搜索laravel中特定千米内的用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47443917/

10-10 23:35