我的 user
班上有许多人 address
班级。这个 address
类具有作用域查询函数以获取区域附近的所有地址:
public static function scopeGetByDistance($query,$lat, $lng, int $max_distance)
{
return $query->selectRaw('id, lat, lng, profileAddress.idMember, ( 3959 * acos( cos( radians( '. $lat.') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(' . $lng . ') ) + sin( radians(' . $lat .') ) * sin( radians(lat) ) ) ) AS distance')
->having('distance', '<', $max_distance );
}
我要获取所有具有以下地址的用户 max_distance
对某些人来说 (lat,lng)
我想按这个距离排列。
如何使用查询生成器实现这一点?我试过这个:
$users = \App\User::leftJoin('addresses', function($join){
$join->getByDistance(44.81, 20.46, 20);
})
->select(DB::raw('MIN(distance) as closest'))
->groubBy('user.id')
->orderBy('closest')
->get();
但这会导致
方法\database\query\joinclause::getbydistance不存在。
2条答案
按热度按时间polkgigr1#
试试这个
kqqjbcuj2#
好吧,我刚发现加入和关系不受拉威尔的支持
这就是我最后所做的: