如何在Eloquent查询中关联City模型获取经纬度填充lo/la参数
解决方案
首先确保User模型与City模型建立正确的关联关系:
// app/Models/User.php public function city() { return $this->belongsTo(City::class); }
接下来修改getTableQuery方法,通过关联City表来获取用户所在城市的经纬度字段,将其传入AppendDistanceTo方法:
protected function getTableQuery(): Builder { return User::where('age', '>', 21) ->join('cities', 'users.city_id', '=', 'cities.id') ->appendDistanceTo( $this->city->geo->long, $this->city->geo->lat, 'cities.lo', 'cities.la' ); }
说明
- 通过
join关联cities表,让查询能访问到每个用户对应城市的lo(经度)和la(纬度)字段。 - 直接传入
'cities.lo'和'cities.la'作为参数,AppendDistanceTo方法会基于这些字段值,与选中城市的经纬度计算距离。
内容的提问来源于stack exchange,提问作者photojo
相关产品推荐
相关产品推荐

