gleman17 / laravel-geographical
轻松为您的记录添加经纬度列,并使用继承功能计算距离
1.0.4
2020-09-14 16:59 UTC
Requires
- php: >=5.6.4
- laravel/framework: 5.*|6.*|7.*|8.*
This package is auto-updated.
Last update: 2024-09-07 04:09:36 UTC
README
轻松为您的记录添加经纬度列,并使用继承功能计算距离。
首先,更新您的数据库或为每个模型添加以下迁移
$table->double('longitude'); $table->double('latitude');
最后,在您的模型中使用
use Geographical;
1. 距离
查找从特定位置到您表中所有条目的距离。
$query = Model::distance($latitude, $longitude); $asc = $query->orderBy('distance', 'ASC')->get();
2. 地理围栏
查找您表中所有在圆形地理围栏内的条目。
$query = Model::geofence($latitude, $longitude, $inner_radius, $outer_radius); $all = $query->get();
单位
默认的距离单位是英里。您可以通过在模型中放置以下内容将其更改为公里
protected static $kilometers = true;
注意事项
- 该方法返回一个
Eloquent.Builder对象,以便您可以添加可选条件。 - 如果您需要只选择特定的列,可以使用
select()实现。Model::select('id', 'name')->distance($latitude, $longitude);
(select()应在distance()/geofence()之前) - 您可以在结果中使用
distance作为聚合列。(聚合列不能在WHERE中使用,请使用HAVING来执行任何条件) - 如果您使用不同的列名表示纬度和经度,请在 Model.php 中提及它们
const LATITUDE = 'lat'; const LONGITUDE = 'lng';
安装
需要 PHP 5.6.4+ 和 Laravel 5+。
要获取 Laravel Geographical 的最新版本,只需使用 Composer 引入项目即可
$ composer require malhal/laravel-geographical