我有以下雄辩的查询。
Company::has('cars')->with([
'cars', 'location' => function ($q) {
$q->nearBy(); // *** See futher
}
])->take(40)->paginate(10);
我如何按距离订购公司?
这是Location
模型中的近邻范围:
public function scopeNearBy($query)
{
$location = json_decode(request()->cookie('location'));
$query->distance($location->lat, $location->lng); // ** Using package
return $query->orderBy('distance');
}
** 使用此软件包。
距离的计算是可以的,当我调用以下内容时有效。
AppAddress::nearBy()->get()
您必须将位置表连接到公司查询,然后才能按距离排序。
在我看来,唯一的方法是在添加每个位置时存储它们的距离。然后,当然,您可以按距离对它们进行排序。
如果你能找到这个包的距离。将距离追加到您的公司模型。
然后,您可以轻松地在控制器中对集合进行排序
请参阅 https://laravel.com/docs/5.8/collections#method-sortby