akuechler / laravel-geoly
在您的 Laravel Eloquent 模型上执行快速有效的半径搜索。
v1.0.6
2021-04-20 07:17 UTC
Requires
- php: >=7.1
Requires (Dev)
- orchestra/testbench: ^6.0@dev
- phpunit/phpunit: ^9.2@dev
This package is auto-updated.
Last update: 2024-09-20 14:55:45 UTC
README
在您的 Laravel Eloquent 模型上执行快速有效的半径搜索。
Laravel Geoly 为您的 Laravel Eloquent 模型提供了一种方便的方式,以查询围绕某个位置的一定半径范围内的数据。它通过使用边界框来减少可能的结果数量,并仅在剩余的子集上计算距离,从而实现闪电般的快速。Laravel Geoly 支持MySQL和PostgreSQL。
要求
- PHP 7.1+
- Laravel 5+
- 已测试MySQL和PostgreSQL
安装
通过 composer 需求项目
$ composer require akuechler/laravel-geoly
如何使用
Geoly 假设 eloquent 模型中存在两列 latitude
和 longitude
。如果尚未存在,请将其添加到迁移中。
$table->double('latitude'); $table->double('longitude');
如果您希望为数据库列使用其他名称,请在模型中指定它们。
const LATITUDE = 'lat'; const LONGITUDE = 'lng';
在 Eloquent 模型中使用 Geoly 包。
class YourModel extends Model { use Geoly; ... }
要搜索围绕特定位置的一定半径范围内的所有模型,请将 radius
范围添加到查询中。
$query = YourModel::radius($latitude, $longitude, $radius); $query->get();
致谢
此项目深受 Laravel Geographical 和 Movable Type Scripts 文章中关于 在边界圆中选择点 的启发。