eloquent: фильтровать и сортировать модель по вычисленному атрибуту в связанной модели? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть следующие модели:

Product (id, sn, shop_id)
Shop (id, name, latitude, longitude)

Как получить список товаров, отсортированных по расстоянию, где:

distance(latitude, longitude, $request->query('lat'), $request->query('lon')) < $request->query('rad')

И как добавить расстояние к результату?

1 Ответ

1 голос
/ 30 марта 2020

Используйте orderByRaw() с join:

Product::join('Shop', 'Shop.id', '=', 'Product.shop_id')
       ->select('Product.*')
       ->orderByRaw('distance(latitude, longitude, ?, ? < ?', [$request->query('lat'), $request->query('lon')), $request->query('rad')])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...