ardyn / zipcode
为您的项目提供的邮编数据库。
Requires
- php: >=5.3.0
- illuminate/support: 4.*
Requires (Dev)
- hamcrest/hamcrest-php: dev-master
- mockery/mockery: dev-master
- phpunit/phpunit: 4.0.*
- way/phpunit-wrappers: dev-master
This package is not auto-updated.
Last update: 2024-10-02 06:58:14 UTC
README
使用此包将邮编转换为地理坐标,计算两个邮编之间的距离,找到距离纬度和经度点最近的邮编,以及返回半径内的邮编列表。
安装
通过composer安装,发布配置文件,使用新的artisan命令设置数据库,注册服务提供者和别名。
Composer
编辑您的composer.json
文件
"require": { "ardyn/zipcode": "0.5" }
运行composer update
。
发布配置文件
如果您想更改默认配置设置,运行php artisan config:publish ardyn/zipcode
,然后修改app/config/packages/ardyn/zipcode/config.php
的内容。
与Laravel集成
将以下内容添加到您的app/config.php
文件中的providers
数组
'Ardyn\Zipcode\ZipCodeServiceProvider'
在aliases
数组中添加别名
'Zipcode' => 'Ardyn\Zipcode\Facades\ZipCode'
数据库设置
要创建迁移,运行artisan zipcode:migrate source
,其中source
是一个带有列头的CSV文件。这将使用config.php
文件中的数据创建迁移。您可以通过包含带有逗号[,]分隔的列来使用--columns
选项提供额外的列。列名称必须与您的邮编数据源文件中的列头匹配。迁移将移动到在config.php
文件中设置的迁移目录。
在迁移发布后,您可以使用artisan migrate
运行迁移。
要填充数据库,调用artisan zipcode:seed source
,其中source是用于迁移的相同CSV文件。默认情况下,仅填充zip_code、latitude和longitude列。要包含更多列,请使用columns
选项。与迁移一样,列必须在数据源文件的列头中存在。
某些方法永久缓存。在更新数据库后,您可能需要清除缓存。
用法
用法非常简单。只需调用Zipcode::find($zipCode)
即可返回一个ZipCode模型。
示例
// Finds the zip code and returns the ZipCodeEngine class $zipCode = Zipcode::find('90210'); // Return a property of the zip code record // These three methods are agnostic of your database column names $zipCode->zipCode(); $zipCode->latitude(); $zipCode->longitude(); // Access any other column using its name $zipCode->my_column; // Calculate distance between two zip codes Zipcode::distance($zipCode, '84102', "miles"); // Return all zip codes within $outerRadius and $innerRadius Zipcode::radiusSearch($zip1, $zip2, $outerRadius, $innerRadius, "miles"); // Find nearest zip code Zipcode::nearest($latitude, $longitude);
单位
在调用distance方法或radiusSearch方法时,您可以提供“miles”、“feet”、“kilometers”、“meters”、“radians”或“degrees”的“unit”参数。
扩展包
您可以通过编辑config.php
文件来覆盖默认模型,使用自己的模型,该模型必须实现ardyn\Zipcode\Models\ZipCodeModelInterface
。仓库也可以扩展。
要更改模型的primaryKey或表,只需编辑config.php
文件即可,因为提供的ZipCodeRepository类将设置模型上的这些字段。
邮编数据源
在/src/sample.csv
中提供的邮编数据仅用于演示目的!要获取完整的邮编列表,请访问[http://greatdata.com/free-zip-code-database]获取免费数据库,或从[http://www.zip-codes.com/zip-code-database.asp]购买具有更精确WGS84坐标的数据库。
TODO
- 重构这个玩意!
- 语义化版本!
- 对ZipCodeRepository进行单元测试
- 对artisan命令进行单元测试
- 更好的文档!
- Find 应返回 StdClass 而不是 Eloquent Model