雄辩的Laravel按相关模型对分页查询进行排序



我有以下雄辩的查询。

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

最新更新