Package Laravel untuk data wilayah administratif Indonesia (Provinsi, Kabupaten/Kota, Kecamatan, Desa) lengkap dengan Kodepos. Super cepat dan ringan.
hifzi/wilayah-indonesia is a Laravel package for package laravel untuk data wilayah administratif indonesia (provinsi, kabupaten/kota, kecamatan, desa) lengkap dengan kodepos. super cepat dan ringan..
It currently has 0 GitHub stars and 9 downloads on Packagist (latest version 1.0.0).
Install it with composer require hifzi/wilayah-indonesia.
Discover more Laravel packages by hifzi
or browse all Laravel packages to compare alternatives.
Last updated
Package Laravel untuk data wilayah administratif Indonesia (Provinsi, Kabupaten/Kota, Kecamatan, Desa) lengkap dengan Kodepos. Super cepat, ringan, dan tidak membebani database.
1101012001), memaksimalkan performa indexing database dan kecepatan pemotongan string (substr) di PHP.indonesia_, ref_, atau bebas sesuai konfigurasi .env tanpa merusak relasi.Package ini dirancang khusus untuk performa tinggi dan pengambilan data cepat. Sangat cocok digunakan untuk:
1101012001) menjadi alamat lengkap (Provinsi s/d Kodepos) tanpa melakukan query JOIN ke database.Package ini sengaja tidak menyertakan file Eloquent Model. Kami hanya menyediakan struktur tabel (Migrations) dan data lengkapnya (Seeders).
Kenapa ini menguntungkan?
Hifzi\WilayahIndonesia\Models\Village).app/Models/ aplikasi Anda sesuai arsitektur bisnis Anda.IndReg yang menggunakan Cache Array murni.belongsTo, hasMany), cukup buat Model di aplikasi Anda yang mengarah ke tabel prefix yang Anda gunakan.Jika Anda butuh relasi ORM, buat Model di aplikasi Laravel Anda seperti ini:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Village extends Model
{
// Sesuaikan prefix tabel dengan config Anda
protected $table = 'indonesia_villages';
protected $primaryKey = 'code';
public $incrementing = false;
protected $keyType = 'string';
public function district()
{
return $this->belongsTo(District::class, 'district_code', 'code');
}
}
Tambahkan package ke proyek Laravel Anda via Composer:
composer require hifzi/wilayah-indonesia
Publish Config & Migration:
php artisan vendor:publish --tag="wilayah-indonesia-config"
php artisan vendor:publish --tag="wilayah-indonesia-migrations"
Jalankan Migration:
php artisan migrate
Jalankan Seeder Data Wilayah:
php artisan hifzi:wilayah-indonesia:seed
(Opsional) Jika Anda ingin memasukkannya ke auto-seeder bawaan Laravel, tambahkan ini di database/seeders/DatabaseSeeder.php aplikasi Anda:
use Hifzi\WilayahIndonesia\Database\Seeders\WilayahIndonesiaSeeder as IndonesiaSeeder;
public function run(): void
{
$this->call([
IndonesiaSeeder::class,
]);
}
Anda bisa mengubah pengaturan di file config/wilayah-indonesia.php atau lewat file .env:
WILAYAH_TABLE_PREFIX=indonesia_ # Prefix tabel di database
WILAYAH_CACHE_ENABLED=true # Aktifkan/Nonaktifkan cache
WILAYAH_CACHE_TTL=2592000 # Waktu cache dalam detik (30 hari)
WILAYAH_CACHE_STORE=redis # Driver cache (null = ikut default Laravel)
WILAYAH_CACHE_PREFIX=wilayah: # Prefix key di cache store
Anda bisa menggunakan Facade IndReg di Controller Anda. (Anda juga bebas mengubah namanya menggunakan use ... as Wilayah; jika diinginkan).
Untuk kebutuhan form alamat bertingkat (Provinsi -> Kota -> Kecamatan -> Desa). Data di-cache per level.
use Hifzi\WilayahIndonesia\Facades\IndReg;
// Ambil Semua Provinsi
$provinces = IndReg::getProvinces();
// Return: [['code' => '11', 'name' => 'Aceh'], ...]
// Ambil Kota berdasarkan Kode Provinsi
$cities = IndReg::getCitiesByProvince('11');
// Return: [['code' => '1101', 'name' => 'Kabupaten Aceh Selatan'], ...]
// Ambil Kecamatan berdasarkan Kode Kota
$districts = IndReg::getDistrictsByCity('1101');
// Return: [['code' => '110101', 'name' => 'Bakongan'], ...]
// Ambil Desa berdasarkan Kode Kecamatan
$villages = IndReg::getVillagesByDistrict('110101');
// Return: [['code' => '1101012001', 'name' => 'Keude Bakongan', 'postal_code' => '23773'], ...]
Sesuai untuk menampilkan detail alamat dari tabel companies atau users tanpa query JOIN.
use Hifzi\WilayahIndonesia\Facades\IndReg;
$address = IndReg::getFullAddressByVillageCode('1101012001');
/* Hasil return (Array):
[
'province' => ['code' => '11', 'name' => 'Aceh'],
'regency' => ['code' => '1101', 'name' => 'Kabupaten Aceh Selatan'],
'district' => ['code' => '110101', 'name' => 'Bakongan'],
'village' => ['code' => '1101012001', 'name' => 'Keude Bakongan', 'postal_code' => '23773']
]
*/
Mencari desa berdasarkan Nama Desa atau Kode Pos.
Fungsi ini digunakan untuk kebutuhan autocomplete/select2 pada form alamat. Hasil pencarian menampilkan informasi ringkas agar operator dapat memilih desa yang tepat ketika terdapat nama desa yang sama di wilayah berbeda.
use Hifzi\WilayahIndonesia\Facades\IndReg;
// Cari berdasarkan nama desa
$results = IndReg::searchVillages('Bakongan', 10);
// Cari berdasarkan kode pos (5 digit)
$results = IndReg::searchVillages('23773', 10);
/* Hasil return (Array):
[
[
'value' => '1103072001',
'label' => '23773 - Bakongan - Bakongan - Kabupaten Aceh Selatan - Aceh',
'data' => [
'code' => '1103072001',
'name' => 'Bakongan',
'postal_code' => '23773',
'district' => 'Bakongan',
'city' => 'Kabupaten Aceh Selatan',
'province' => 'Aceh',
],
],
]
*/
Data database wilayah dan kodepos yang digunakan pada package ini merupakan hasil kontribusi open-source dari: