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

时间:2019-04-26 17:13:17

标签: laravel laravel-5 eloquent laravel-query-builder

我有以下口才查询。

Company::has('cars')->with([
    'cars', 'location' => function ($q) {
        $q->nearBy(); // *** See futher
    }
])->take(40)->paginate(10);

如何按距离订购公司?

***这是Location模型中的NearBy范围:

public function scopeNearBy($query)
{
    $location = json_decode(request()->cookie('location'));
    $query->distance($location->lat, $location->lng); // ** Using package

    return $query->orderBy('distance');
}

**使用this package

距离的计算是可以的,当我调用以下内容时可以使用

\App\Address::nearBy()->get()

3 个答案:

答案 0 :(得分:0)

您必须将位置表加入到公司查询中,然后才能按距离排序。

答案 1 :(得分:0)

我认为,唯一的方法是在添加每个位置时存储它们的距离。然后,您当然可以按距离订购它们。

答案 2 :(得分:0)

如果您可以使用该软件包查找距离。将距离附加到您的公司模型中。

然后您可以轻松地在控制器中对集合进行排序

推荐https://laravel.com/docs/5.8/collections#method-sortby