azishapidin/indoregion

Laravel 用于存储印度尼西亚地区(省份、区、县和村庄)的包

3.0.3 2021-04-23 12:16 UTC

README

Build Status StyleCI License Latest Stable Version Total Downloads

azishapidin/indoregion 是一个用于存储从省份、区/市、县/区、乡/镇到村庄的印度尼西亚地区数据的 Laravel 包。包将为您的项目添加迁移、seeder(用于将数据导入数据库)和模型。

所有数据都将存储在数据库中,获取数据的方式与通过模型获取数据类似(请参阅使用部分)。

这些数据来自 2018 年 1 月 11 日的 Pemutakhiran MFD 和 MBS Badan Pusat Statistik 网站(http://mfdonline.bps.go.id/)。来源:https://github.com/edwardsamuel/Wilayah-Administratif-Indonesia

快速安装

打开命令行,然后运行以下命令进行安装

composer require azishapidin/indoregion

支持的版本

注册服务提供商

Laravel

如果您使用的是 Laravel 5.5 或更高版本,则可以跳过此部分,因为 indoregion 包已使用自动发现。

但如果您的工作项目仍在使用低于 5.5 的版本,请打开文件 config/app.php,然后向 Service Providers 数组中添加 IndoRegionServiceProvider 类。

// Provider Lain
AzisHapidin\IndoRegion\IndoRegionServiceProvider::class,

Lumen

如果您想在 Lumen 项目中使用此包,则必须在 bootstrap/app.php 文件中注册 Service Provider,并添加以下内容:

$app->register(AzisHapidin\IndoRegion\IndoRegionServiceProvider::class);

发布文件

在命令行中运行以下命令

php artisan indoregion:publish

运行上述命令后,indoregion 将复制以下文件:

  • /packages/azishapidin/indoregion/src/database/migrations 目录下的迁移文件复制到 /database/migrations 目录
  • /packages/azishapidin/indoregion/src/database/seeds 目录下的 Seeder 文件复制到 /database/seeds 目录
  • /packages/azishapidin/indoregion/src/database/models 目录下的模型文件复制到 /app/Models 目录

然后运行以下命令

composer dump-autoload

迁移和 Seeder

运行以下命令以运行迁移和 Seeder

php artisan migrate

# Import semua data dari Provinsi sampai Kelurahan sekaligus
php artisan db:seed --class=IndoRegionSeeder      # Import data Provinsi, Kota/Kabupaten, Kecamatan/Distrik dan Desa/Kelurahan

# Anda juga bisa melakukan Import data satu per satu, mulai dari Provinsi sampai Kelurahan
php artisan db:seed --class=IndoRegionProvinceSeeder      # Import data provinsi
php artisan db:seed --class=IndoRegionRegencySeeder       # Import data kota/kabupaten
php artisan db:seed --class=IndoRegionDistrictSeeder      # Import data kecamatan/distrik
php artisan db:seed --class=IndoRegionVillageSeeder       # Import data desa/kelurahan

基本使用

您可以使用以下类,就像使用模型一样。

<?php

use App\Models\Province;
use App\Models\Regency;
use App\Models\District;
use App\Models\Village;

// Get semua data
$provinces = Province::all();
$regencies = Regency::all();
$districts = District::all();
$villages = Village::all();

// Cari berdasarkan nama
$provinces = Province::where('name', 'JAWA BARAT')->first();
$regencies = Regency::where('name', 'LIKE', '%CIANJUR%')->first();
$districts = District::where('name', 'LIKE', 'BANDUNG%')->get();
$villages = Village::where('name', 'BOJONGHERANG')->first();

高级使用

<?php

// Get Kecamatan dari sebuah Provinsi.
$districts = $province->districts;

// Cek jika provinsi memiliki kabupaten terkait menggunakan logika OR bedasarkan nama kabupaten.
$province->hasDistrictName(["SELAKAU TIMUR", "PEMANGKAT", "SEMPARUK", "JAWAK"]);

// Cek jika provinsi memiliki kabupaten terkait menggunakan logika AND bedasarkan nama kabupaten.
$province->hasDistrictName(["SELAKAU TIMUR", "PEMANGKAT", "SEMPARUK", "JAWAI"], true);

// Cek jika provinsi memiliki kabupaten terkait menggunakan logika OR bedasarkan id kabupaten.
$province->hasDistrictId([6101, 6102, 6103, 6104]);

// Cek jika provinsi memiliki kabupaten terkait menggunakan logika AND bedasarkan id kabupaten.
$province->hasDistrictId([6101, 6102, 6103, 6104], true);

// Get Kabupaten/Kota dari sebuah Provinsi
$regencies = $province->regencies;

// Get Kecamatan dari sebuah Kabupaten/Kota
$districts = $regency->districts;

// Get Desa/Kelurahan dari sebuah Kabupaten/Kota
$villages = $regency->villages;

// Cek jika kabupaten memiliki desa/kelurahan terkait menggunakan logika AND bedasarkan nama desa/kelurahan.
$regency->hasVillageName(["PARIT SETIA", "PELIMPAAN", "SEMPARUK"], true);

// Cek jika kabupaten memiliki desa/kelurahan terkait menggunakan logika AND bedasarkan id desa/kelurahan.
$regency->hasVillageId([6101050014, 6101040025, 6101060023, 6101020014]);

// Get Desa/Kelurahan dari sebuah Kecamatan
$villages = $district->villages;

// Cek Desa ada di sebuah Provinsi
$village->isProvince(61);

// Cek Desa ada di sebuah Kabupaten
$village->isRegency(6102);

// Cek Desa ada di sebuah Kecamatan
$village->isDistrict(6101050);

// Cek Kecamatan ada di sebuah Provinsi
$district->isProvince(61);

// Cek Kecamatan ada di sebuah Kabupaten
$village->isRegency(6102);

// Get Kabupaten dari sebuah Desa
$village->regency;

// Get Provinsi dari sebuah Desa
$village->province;

// Get Provinsi dari sebuah Kecamatan
$district->province;