Красноречивый запрос на сортировку по Laravel по связанной модели - PullRequest
2 голосов
/ 26 апреля 2019

У меня есть следующий красноречивый запрос.

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

Как я могу заказать компании на расстоянии?

*** Это область действия NearBy в Location -модели:

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

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

**, которая использует этот пакет .

Расчет расстояний в порядке и работает, когда я вызываю следующее.

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

Ответы [ 3 ]

0 голосов
/ 05 мая 2019

На мой взгляд, единственный способ - сохранить расстояние до каждого местоположения при их добавлении.Тогда, конечно, вы можете заказать их по расстоянию.

0 голосов
/ 06 мая 2019

, если вы можете найти расстояние, используя этот пакет. Добавьте расстояние к модели вашей компании.

Тогда вы можете легко отсортировать коллекцию в контроллере

см. https://laravel.com/docs/5.8/collections#method-sortby

0 голосов
/ 04 мая 2019

Вы должны присоединить таблицу местоположений к запросу компании, а затем вы можете заказать по расстоянию.

...