Выполняйте быстрый и эффективный поиск по радиусу в моделях Laravel Eloquent.
Laravel Geoly предоставляет вашим моделям Laravel Eloquent удобный способ выполнения запросов в определенном радиусе вокруг позиции. Это молниеносно благодаря использованию ограничивающей рамки для сокращения возможных результатов и расчету расстояния только по оставшемуся подмножеству. Laravel Geoly работает как с MySQL, так и с PostgreSQL.
Просто запросите проект через композитор:
$ composer require akuechler/laravel-geoly
Geoly предполагает наличие двух столбцов latitude
и longitude
в вашей красноречивой модели. Просто добавьте их в свою миграцию, если они еще отсутствуют.
$ table -> double ( ' latitude ' );
$ table -> double ( ' longitude ' );
Если вы предпочитаете использовать другие имена для столбцов базы данных, укажите их в своей модели.
const LATITUDE = ' lat ' ;
const LONGITUDE = ' lng ' ;
Используйте пакет Geoly в своей модели Eloquent.
class YourModel extends Model
{
use Geoly ;
...
}
Чтобы найти все модели в определенном радиусе вокруг позиции, добавьте область radius
в свой запрос.
$ query = YourModel :: radius ( $ latitude , $ longitude , $ radius );
$ query -> get ();
Этот проект во многом вдохновлен статьей Laravel Geographical and Movable Type Scripts «Выбор точек внутри ограничивающего круга».