mysql 省市区一次返回_GitHub - ionepub/region: 根据国家统计局统计用区划代码查询地区信息,目前数据最小单位为街道、乡镇,支持编号查询/所在省市区查询/下级查询/中文搜索。...

region

68747470733a2f2f706f7365722e707567782e6f72672f696f6e657075622f726567696f6e2f762f737461626c65

68747470733a2f2f706f7365722e707567782e6f72672f696f6e657075622f726567696f6e2f646f776e6c6f616473

68747470733a2f2f706f7365722e707567782e6f72672f696f6e657075622f726567696f6e2f762f756e737461626c65

68747470733a2f2f706f7365722e707567782e6f72672f696f6e657075622f726567696f6e2f6c6963656e7365

A Chinese region search helper.

中国地区信息查询辅助类。根据国家统计局统计用区划代码查询地区信息,目前数据最小单位为街道、乡镇,支持编号查询/所在省市区查询/下级查询/中文搜索。

Requirement 依赖

catfan/medoo 1.5+

MySQL

安装

# 稳定版本

composer require ionepub/region

composer require --prefer-dist ionepub/region

# 开发版本

composer require ionepub/region:dev-master

tip

如果 composer require ionepub/region 时报错:

[InvalidArgumentException]

Could not find package ionepub/region at any version for your minimum-stabi

lity (stable). Check the package spelling or your minimum-stability

需要先执行一次 composer update nothing,再执行require命令就可以了

由于region包依赖于Medoo,安装同时也会安装Medoo。

使用

引用

require 'vendor/autoload.php';

示例

use Ionepub\Region;

try {

// get a medoo instance

$db = new medoo([

'database_type' => 'mysql',

'database_name' => 'test',

'server' => 'localhost',

'username' => 'root',

'password' => 'root',

'charset' => 'utf8'

]);

$table_name = 'region';

// get a region instance

// 第三个参数为true,表示首次安装,将在数据库中创建名为 $table_name 的表,并初始化地区数据

$region = Region::init($db, $table_name, true);

// 获取所有省份

$province = $region->get();

// 获取北京市信息

$city_of_beijing = $region->get('110000000000');

// 获取北京市下属区域信息

$child_of_beijing = $region->child('110000000000');

// 获取东华门街道办事处所在位置:北京市/市辖区/东城区/东华门街道办事处

$position_of_region = $region->position('110101001000');

// 查询名称中包含北京的地区信息

$search_of_region = $region->search('北京');

// 在省份中查询名称包含北京的地区信息

$search_of_province = $region->search('北京', Region::LEVEL_PROVINCE);

// 在所有地区中查询名称为“北京市”的地区信息(非模糊查询)

$search3 = $region->search('北京市', Region::LEVEL_DEFAULT, Region::STRICT);

} catch (\Exception $e) {

echo 'Error catched: ' . $e->getMessage();

}

返回值示例:

Array

(

[regionId] => 355

[regionCode] => 120000000000

[regionName] => 天津市

[regionLevel] => 2

)

首次初始化

$region = Region::init($db, $region_name, true);

首次初始化时,需向init静态方法传递第三个参数为true,此时将使用内置的sql文件向MySQL数据库中创建名为 $table_name 的表,并导入所有地区数据。首次初始化时,可能耗时较长。

当数据库中已有此表时,即使第三个参数为true,也不会再次初始化。

表结构如下:

CREATE TABLE `region` (

`regionId` int(11) NOT NULL AUTO_INCREMENT,

`regionCode` char(12) DEFAULT '' COMMENT '12位地区编码',

`regionName` varchar(120) DEFAULT '' COMMENT '地区名',

`regionLevel` tinyint(1) DEFAULT '0' COMMENT '地区层级,1国家2省3市4县5乡镇6村委会',

PRIMARY KEY (`regionId`),

UNIQUE KEY `code` (`regionCode`),

KEY `regionName` (`regionName`),

KEY `regionLevel` (`regionLevel`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='地区信息表';

获取实例

$region = Region::init($db, $region_name);

$region = Region::init($db, $region_name, true);

无论第三个参数是否为true,init()都将返回一个Region实例。

公共常量

Region::LEVEL_DEFAULT 地区层级-默认层级

Region::LEVEL_PROVINCE 地区层级-省级

Region::LEVEL_CITY 地区层级-市级

Region::LEVEL_DISTRICT 地区层级-县、区级

Region::LEVEL_TOWN 地区层级-街道、乡镇级

Region::STRICT 严格搜索模式

Region::NOT_STRICT 非严格搜索模式

获取省份列表

$region->get();

获取单个地区信息

$region->get(1);

$region->get('110000000000');

$region->get('110000000000', Region::LEVEL_PROVINCE); // 明确获取编码为110000000000的省份地区信息

获取多个地区信息

$region->get(['110000000000', 355]); // 同时获取两个地区的信息

$region->get([], Region::LEVEL_PROVINCE); // 获取所有省份信息

获取子级地区信息

$region->child(3);

$region->child('110000000000');

child方法第二个参数接收地区层级参数,表示想要获取的子地区层级,默认为第一个参数所在层级的下一级,一般不使用

$region->child(3, Region::LEVEL_DEFAULT);

获取地区所在位置

$region->position('110101001000');

position方法同样支持地区ID和地区编码传入,如市则返回省市,区则返回省市区。返回的数据按层级增序排序,包含参数所在地区。

按地区名称搜索

$region->search('北京');

search方法接收3个参数:

地区名

地区层级

搜索模式,默认 Region::NOT_STRICT 非严格搜索模式,即模糊搜索

// 查询名称中包含北京的地区信息

$region->search('北京');

// 在省份中查询名称包含北京的地区信息

$region->search('北京', Region::LEVEL_PROVINCE);

// 在所有地区中查询名称为“北京市”的地区信息(非模糊查询)

$region->search('北京市', Region::LEVEL_DEFAULT, Region::STRICT);

License

MIT license.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值