Как правильно сформулировать запрос «многое-ко-многим» с геолокацией к БД через Laravel framework?

Здравствуйте, возникла проблема с правильным формированием запросы к БД

Вкратце, у нас есть модель " Сценарии" которая содержит несколько 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;
            ');
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы