LaravelPackages.net
Acme Inc.
Toggle sidebar
lvqingan/laravel-cn-region

Laravel中国省市区无数据库实现方案

5
1
About lvqingan/laravel-cn-region

lvqingan/laravel-cn-region is a Laravel package for laravel中国省市区无数据库实现方案. It currently has 1 GitHub stars and 5 downloads on Packagist. Install it with composer require lvqingan/laravel-cn-region. Discover more Laravel packages by lvqingan or browse all Laravel packages to compare alternatives.

Last updated

中国行政区划省市区(无数据表实现方案)

思路:通过身份证前6位来处理省市区的级联关系

Build Status Style Status

安装

  1. 安装代码库
composer require lvqingan/laravel-cn-region:dev-master
  1. 修改 database/migration 中的表结构,增加保存区域的字段(默认使用region
$table->char('region', 6);
$table->index(['region']);
  1. Eloquent 的模型中添加 HasRegion trait

默认使用 region 作为字段名,如果数据表使用的是其他字段来保存区域值,则需要定义属性 $regionFieldName

   class User extends Model
   {
       use HasRegion;
   }
   class User extends Model
   {
       use HasRegion;

       protected $regionFieldName = 'shengshiqu';
   }

获取下拉列表数据

省份

$provinces = (new \Lvqingan\Region\Loader('province'))->load();
{
    "110000":"北京市",
    "820000":"澳门特别行政区"
}

城市

$cities = (new \Lvqingan\Region\Loader('city', '340000'))->load();
{
    "340100":"合肥市",
    "341800":"宣城市"
}

区县

$districts = (new \Lvqingan\Region\Loader('340100', '340100'))->load();
{
    "340103":"庐阳区",
    "340111":"包河区"
}

获取名称

实例化的模型对象可以调用下面的属性(假设区域值为340104)

| 属性名称 | 说明 | 返回值 | |----------|:-------------:|------:| | province_code | 省份编码 | 340000 | | city_code | 城市编码 | 340100 | | district_code | 区县编码 | 340104 | | province_name | 省份名称 | 安徽省 | | city_name | 城市名称 | 合肥市 | | district_name | 区县名称 | 蜀山区 | | full_city_name | 完整城市名称 | 安徽省合肥市 | | full_district_name | 完整区县名称 | 安徽省合肥市蜀山区 |

数据查询

按区域编码直接查询区域等于该值的数据

    User::whereRegion('340104')->get()

按区域编码直接查询区域包含在该范围内的数据

    User::whereInRegion('340000')->get()

Star History Chart