Здравствуйте, возникла проблема с правильным формированием запросы к БД
Вкратце, у нас есть модель " Сценарии" которая содержит несколько id модели " Точки". Одна точка может принадлежать множеству сценариев.
Модель "Точки" содержит такие поля как "долгота" и "широта"
Мне необходимо получить все сценарии, которые находятся рядом с определенной геоточкой. Как правильно сформулировать запрос или преобразовать исходный? не хочется вручную в цикле перебирать все точки и получать для них сценарии в самом коде.
сейчас точки получаются следующим образом:
$radius = 100;
$max_distance = 20;
$lat = {your_lat};
$lng = {your_lng};
return $points = DB::select(
'SELECT * FROM
(SELECT id, name, address, phone, latitude, longitude, (' . $radius . ' * acos(cos(radians(' . $lat . ')) * cos(radians(latitude)) *
cos(radians(longitude) - radians(' . $lng . ')) +
sin(radians(' . $lat . ')) * sin(radians(latitude))))
AS distance
FROM points) AS distances
WHERE distance < ' . $max_distance . '
ORDER BY distance
OFFSET 0
LIMIT 20;
');