@deadlockone
разработчик

Как получить информацию в определенном радиусе?

Добрый день!
Как получить информацию в определенном радиусе?
Или как сделать сортировку "рядом со мной"?
У меня есть такой запрос:
SELECT DISTINCT name,
  id, (
    6371 * acos (
      cos ( radians(43.639955) )
      * cos( radians( coords_latitude ) )
      * cos( radians( coords_longitude ) - radians(68.324195) )
      + sin ( radians(43.639955) )
      * sin( radians( coords_latitude ) )
    )
  ) AS distance
FROM areas
#	HAVING distance < 10
ORDER BY distance
	LIMIT 0 ,10

Как его реализовать в YII2?
Как реализовать запрос чтобы он возвращал список в сортированным виде по координатам(высота и ширина) ?
У нас есть определенная точка и список будет сортироваться в зависимости близости к этой точке, самая близкая точка локации вверху, дальние внизу.
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 1
kawabanga
@kawabanga
По вашему вопросу, можно конечно на моделях разобрать, ничего сложного. Но в таких случаях я обычно делаю два подзапроса. Первым вытаскиваю массив с нужной калькуляцией. Вторым запросом я вытаскиваю нужные модели.

Непонятно, что вы подразумеваете под тем, что надо реализовать на Yii2. Запустить запрос в простом виде -
Yii::$app->db->createCommand($sql)->queryAll() - вернет вам результат запроса.

Для справки:
1) используйте тип данных point, в mysql есть GIS функции для этого. И их проще использовать.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы