salibhdr/typhoon-iran-cities

这是一个Laravel包,可以将伊朗的所有地区(如省份、县、市、市区、乡村和村庄)准确导入数据库

3.0.1 2021-09-18 06:13 UTC

This package is auto-updated.

Last update: 2024-09-18 12:44:17 UTC


README

SaliBhdr|typhoon

Total Downloads Required Laravel Version Required PHP Version Latest Versions License Today Downloads

简介

Typhoon Iran Cities是一个Laravel包,只需一个控制台命令即可将伊朗的所有地区(如省份、县、市、市区、乡村和村庄)导入您的数据库。

毫无疑问,这是最精确的伊朗行政区划Laravel包。

注意:此包允许您选择是否在单个表中使用所有地区,或将其分别划分在各自的表中,或者甚至可以选择您想要的数据。

Administrative Divisions and Regions of Iran

功能

  • 伊朗所有省份(استان)
  • 伊朗所有县(شهرستان)
  • 伊朗所有区(بخش)
  • 伊朗所有市(شهر)
  • 伊朗所有市区(مناطق شهری)
  • 伊朗所有乡村(دهستان)
  • 伊朗所有村庄(آبادی)
  • 内置的省份、县、区、市、市区、乡村和村庄模型
  • 这些表之间的关系数据库
  • 既可以在一个地区表中全部包含,也可以分开在不同的表中
  • 辅助方法

安装

使用composer安装

 $ composer require salibhdr/typhoon-iran-cities

对于Laravel < 5.5,请在config/app.php配置文件中注册服务提供者

'providers' => [

     # Other service providers...
     
     SaliBhdr\TyphoonIranCities\IranCitiesServiceProvider::class,
],

入门

此包提供了一些命令,您可以使用它们轻松导入您所需地区的迁移、模型和数据。

在此之前,您应该注意命令中使用的两个选项的解释

--unite选项

此包可以用于两种不同的策略。一些程序员喜欢每个地区使用单独的表,而其他人则喜欢所有地区都使用单个表。

为此,在本包的第三个版本中,您可以根据自己的喜好选择这些策略之一。

如果您想将所有地区放在一个表中,必须在命令中使用--unite选项。

--target选项

--target选项允许您选择您想要使用的地区。

假设您只想将城市添加到数据库中,并且可能不需要村庄或乡村地区。您只需将--target值设置为城市即可。

您可以从以下选项中选择您想要使用的目标地区:所有、省份、县、区、市、市区、乡村地区、村庄

--target选项的默认值设置为所有。因此,如果您想要所有地区,请勿使用此选项。

用法

命令

以下是所有可用命令的列表

  # init command that runs publish and import commands step by step (For ease of use)
  iran:init                    Copies models and migrations then imports data
  
  # publish commands
  iran:publish:migrations      Copies migrations into migrations directory
  iran:publish:models          Copies related models
    
  # import commands
  iran:import                  Imports all regions into the database (Can be selected by option)

命令说明

iran:init命令

如果您是首次使用此包,或者由于某种原因迁移、模型或数据已删除,可以使用此命令初始化所有三个。在底层,此命令按顺序执行以下命令

  iran:publish:migrations      Copies migrations into migrations directory
  iran:publish:models          Copies related models
  migrate                      For migrating new migrations of package
  iran:import                  Imports all regions into the database (Can be selected by option)

如前所述,所有命令都具有--unite--target选项。

如果您想将所有地区都放入一个 regions 表格中,请使用 --unite 选项。

在以下部分,我们针对城市的目标检查这两个案例。如果您想包含所有地区,请勿使用此选项。

  • 一个 regions 表格
  php artisan iran:init --unite --target=cities

这将发布 IranRegion 模型,create_iran_regions_table 迁移,并将数据导入到城市级别到 iran_regions 表格中,并将忽略城市区,乡村区和村庄。

  • 单独的表格
  php artisan iran:init --target=cities

这将发布 IranProvinceIranCountyIranSectorIranCity 模型,这些模型的相关迁移,并将数据导入到单独的表格中,并将忽略城市区,乡村区和村庄。

iran:import 命令

此命令仅导入数据。请根据您的需求正确使用 --unite--target 选项。

查看上面的 iran:init 部分,了解这些选项的使用方法。

城市示例

  • 一个 regions 表格
  php artisan iran:import --unite --target=cities

这将导入数据到城市级别到 iran_regions 表格中,并将忽略城市区,乡村区和村庄。

  • 单独的表格
  php artisan iran:import --target=cities

这将导入数据到城市级别到单独的表格中,并将忽略城市区,乡村区和村庄。

iran:publish:migrations 命令

此命令将发布相关迁移文件。请根据您的需求正确使用 --unite--target 选项。

查看上面的 iran:init 部分,了解这些选项的使用方法。

您可以使用 --force 选项覆盖现有文件。

城市示例

  • 一个 regions 表格
  php artisan iran:publish:migrations --unite --target=cities

这将发布 create_iran_regions_table 迁移文件。

  • 单独的表格
  php artisan iran:import --target=cities

这将发布到城市级别的相关迁移文件。

iran:publish:models 命令

此命令将发布相关模型文件。请根据您的需求正确使用 --unite--target 选项。

查看上面的 iran:init 部分,了解这些选项的使用方法。

您可以使用 --force 选项覆盖现有文件。

城市示例

  • 一个 regions 表格
  php artisan iran:publish:models --unite --target=cities

这将发布 IranRegion 模型文件。

  • 单独的表格
  php artisan iran:import --target=cities

这将发布到城市级别的相关模型文件。

代码

此包使用 eloquent 模型。一些方法在模型之间是通用的,而另一些则不是。以下是所有可用方法的列表及其用法。

所有模型的通用方法

所有模型都有这些方法

合并模式

IranRegion 模型

单独模式

IranProvince 模型

IranCounty 模型

IranSector 模型

IranCity 模型

IranCityDistrict 模型

IranRuralDistrict 模型

IranVillage 模型

所有模型之间都有关系方法。

示例

  • IranCity 模型
use App\Models\IranCity;

# Fetching collection of cities
$cities          = IranCity::getAll(); // returns collection of cities
$activeCities    = IranCity::getAllActive(); // returns collection of active cities
$notActiveCities = IranCity::getAllNotActive(); // returns collection of not active cities

# Getting County
$city = IranCity::find(1);

# A city belongs to a county
$county = $city->county()->first(); // returns County model
$county = $city->getCounty(); // returns County model

# A city belongs to one province
$province = $city->province()->first(); // returns Province model
$province = $city->getProvince(); // returns Province model

状态字段

每个表格都有一个名为 status 的字段。此字段是布尔类型字段,其中 1 表示活动记录,0 表示非活动记录。为了确保您始终获得活动记录,请使用 active() 方法。

use App\Models\IranCity;
use App\Models\IranCounty;
use App\Models\IranProvince;

# To get active provinces or an active province:
$provinces = IranProvince::active()->get(); // returns collection of all active provinces
$provinces = IranProvince::notActive()->get(); // returns collection of all not active provinces

# You can even check if the record is active or not
$city = IranCity::find(1);

$city->isActive(); //returns true if the record is active false if is not active
$city->isNotActive(); //returns true if the record is not active false if is active

# You can even activate and deactivate records like so:
$county = IranCounty::find(1);

$county->activate(); // activates record by setting status field in db to 1
$county->deactivate(); // deactivates record by setting status field in db to 0

注意

停用将按部门层次结构应用。例如

  • 省的停用将停用该省的所有县和城市等。
  • 县的停用将停用该县的所有城市等。

请注意,子记录将不会更改。如果您尝试通过 active() 范围获取它们,它们将不可用。

例如

use App\Models\IranProvince;
use App\Models\IranCity;

# assume that city with id `1` is belongs to province with id `1'
# if you deactivate province all the cities will be deactivated and not showed in the results.

$province = IranProvince::active()->find(1); // find the active province with id `1`

$province->deactivate(); // deactivate province with id `1`

# now if you try to get city:
$city = IranCity::active()->find(1); // returns null because the province of the city is deactivated

//or

$city = IranCity::find(1); // finds the record because you didn't use active() scope

$city->isActive(); // return false because the province of the city is not active but the status is still 1

待办事项

  • 编写测试
  • 添加地区的经纬度
  • 添加地区的地理位置

问题

您可以在 github 仓库 此处 报告问题。

许可

Typhoon-Iran-Cities 是在 MIT 许可下发布的。

Salar Bahador 创建。

用 ❤ 为您构建。

贡献

贡献,有用的评论和反馈非常受欢迎!

参考

基于 ahmadazizi/iran-cities git 仓库版本 3。了解更多信息。