michaeldrennen / geonames
一个 Laravel (php) 包,用于与 geonames.org 上的地理位置服务进行接口。
Requires
- php: ^7.0 || ^8.0 || ^8.1
- ext-curl: *
- ext-intl: *
- ext-pdo: *
- curl/curl: ^2.2
- fabpot/goutte: ^4.0
- illuminate/database: ^6.0 || ^7.16 || ^8.0 || ^9.0
- illuminate/routing: ^6.0 || ^7.16 || ^8.0 || ^9.0
- illuminate/support: ^6.0 || ^7.16 || ^8.0 || ^9.0
- laravel/framework: ^7.0 || ^8.0 || ^9.0
- michaeldrennen/local-file: ^2.0
- michaeldrennen/remote-file: ^2.0
- nesbot/carbon: ^2.28
Requires (Dev)
- orchestra/testbench: ^5.3
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.2
This package is auto-updated.
Last update: 2024-08-29 18:49:31 UTC
README
一个 Laravel (php) 包,用于与 geonames.org 上的地理定位服务进行接口。
主要版本跳跃
我跳过了几个主要版本,以赶上 Laravel 的主要版本号。这使得事情更加清晰。
注意
为了让这个包“完整”,还有很多工作要做。我已经让它达到可以用于我下一个项目的程度。随着时间的推移,我会改善这个包的文档和测试。感谢您的理解。
安装
composer require michaeldrennen/geonames
然后在 app.php
配置文件中的 providers
数组中添加 geonames
提供商
MichaelDrennen\Geonames\GeonamesServiceProvider::class,
之后,运行迁移命令
php artisan migrate
想安装美国、加拿大和墨西哥的所有 geonames 记录,以及拉入英文的特性代码定义文件吗?
php artisan geonames:install --country=US --country=CA --country=MX --language=en
只想安装 geonames 数据库中的所有内容吗?
php artisan geonames:install
维护
现在您已经在您的系统上运行了 geonames 数据库,您需要保持其更新。
我有一个更新脚本,您需要将其在 Laravel 中安排每天运行。
有关如何安排 Laravel artisan 命令的一些信息
https://laravel.net.cn/docs/5.6/scheduling#scheduling-artisan-commands
您可以在以下位置阅读此通知:http://download.geonames.org/export/dump/
“最后修改”时间戳以中欧时间为准。
geonames 大约在 CET 早上 3 点更新他们的数据。
因此,如果您将系统安排在 CET 早上 4 点之后运行 geonames:update artisan 命令,您应该可以正常运行。
我喜欢让我的服务器运行在 GMT 上。这使事情保持一致。
(中欧时间比格林威治标准时间快 1 小时)
假设您的服务器正在运行在 GMT 上,您的更新命令如下
$schedule->command('geonames:update')->dailyAt('3:00');
更新 artisan 命令将处理 geonames 表的更新和删除。
默认情况下,GeonamesServiceProvider
将在每天 config('geonames.update_daily_at')
运行它。
注意事项
你是否得到了类似这样的信息:1071 指定的键太长
@see https://news.laravel.net.cn/laravel-5-4-key-too-long-error
在您的 AppServiceProvider.php 文件中添加以下内容
Schema::defaultStringLength(191);
关于索引的一些话
这个库包含许多包含大量索引的迁移。并不是每个人都需要所有的索引。
所以当你安装这个库时,运行迁移并删除你不需要的索引。
此外,Laravel 允许你为 varchar 列上的索引指定键长度。有两个索引受此限制。我不再按照“Laravel 方式”在这些列上创建索引,而是发送一个原始的手动查询来创建具有正确长度的索引。