didiwijaya/wilindo
| Install | |
|---|---|
composer require didiwijaya/wilindo |
|
| Latest Version: | v2.0.0 |
| PHP: | ^8.0 |
| License: | MIT |
| Last Updated: | Sep 29, 2025 |
| Links: | GitHub · Packagist |
WilIndo
Package Laravel untuk menambahkan migration dan seeder ke project Anda, dimana migration dan seeder tersebut digunakan untuk menyimpan data wilayah Indonesia mulai dari Provinsi, Kabupaten/Kota, Kecamatan dan Desa/Kelurahan.
📡 Sumber Data
Data wilayah Indonesia (Provinsi, Kabupaten/Kota, Kecamatan, Desa/Kelurahan) bersumber dari layanan master_data_wilayah yang disediakan oleh Kementerian Dalam Negeri melalui aplikasi SPLP yang dikelola oleh Kementerian Komunikasi dan Digital (Komdigi).
Dashboard API SPLP dapat diakses melalui: 🔗 https://splp.layanan.go.id/devportal/apis
(catatan: hanya dapat diakses dari jaringan intra pemerintah)
Namun, API master_data_wilayah dapat diakses secara publik, sehingga integrasi ke dalam aplikasi Laravel tidak memerlukan akses jaringan internal pemerintah.
📋 Fitur
- ✅ Migration untuk 4 tabel wilayah (Provinsi, Kabupaten/Kota, Kecamatan, Desa/Kelurahan)
- ✅ Seeder otomatis dari API SPLP Kemendagri
- ✅ Model Eloquent dengan relationship yang lengkap
- ✅ Helper class untuk query data yang mudah
- ✅ Error handling dan progress tracking
- ✅ Chunking data untuk performa optimal
- ✅ Index database untuk query yang cepat
- ✅ Configurable table prefix
🚀 Instalasi
Via Composer
composer require didiwijaya/wilindo
Publish Assets
php artisan wilindo:publish
Jalankan Migration
php artisan migrate
Jalankan Seeder
php artisan db:seed --class=WilindoSeeder
📖 Penggunaan
Menggunakan Model
use DidiWijaya\WilIndo\Models\Province;
use DidiWijaya\WilIndo\Models\City;
use DidiWijaya\WilIndo\Models\District;
use DidiWijaya\WilIndo\Models\Village;
// Ambil semua provinsi
$provinces = Province::all();
// Ambil kota berdasarkan provinsi
$cities = City::byProvince('32')->get();
// Ambil kecamatan berdasarkan kota
$districts = District::byCity('3201')->get();
// Ambil desa berdasarkan kecamatan
$villages = Village::byDistrict('3201010')->get();
// Ambil data lengkap dengan relationship
$village = Village::with(['district.city.province'])->find(1);
Menggunakan Helper
use DidiWijaya\WilIndo\Helpers\WilindoHelper;
// Ambil semua provinsi
$provinces = WilindoHelper::getProvinces();
// Ambil kota berdasarkan provinsi
$cities = WilindoHelper::getCitiesByProvince('32');
// Ambil alamat lengkap berdasarkan kode desa
$address = WilindoHelper::getCompleteAddress('3201010001');
// Cari provinsi berdasarkan nama
$provinces = WilindoHelper::searchProvinces('Jawa');
// Ambil statistik data
$stats = WilindoHelper::getStatistics();
⚙️ Konfigurasi
File konfigurasi tersimpan di config/wilindo.php:
return [
'prefix' => 'wilindo_', // Prefix untuk nama tabel
];
📊 Struktur Database
Tabel Provinsi
id- Primary keycode- Kode provinsi (2 digit)name- Nama provinsicreated_at,updated_at- Timestamps
Tabel Kabupaten/Kota
id- Primary keycode- Kode kabupaten/kota (4 digit)province_code- Foreign key ke tabel provinsiname- Nama kabupaten/kotacreated_at,updated_at- Timestamps
Tabel Kecamatan
id- Primary keycode- Kode kecamatan (7 digit)city_code- Foreign key ke tabel kabupaten/kotaname- Nama kecamatancreated_at,updated_at- Timestamps
Tabel Desa/Kelurahan
id- Primary keycode- Kode desa/kelurahan (10 digit)district_code- Foreign key ke tabel kecamatanname- Nama desa/kelurahancreated_at,updated_at- Timestamps
🔧 Command
Publish Assets
php artisan wilindo:publish
Publish Config Only
php artisan vendor:publish --tag=wilindo-config
Publish Migrations Only
php artisan vendor:publish --tag=wilindo-migrations
Publish Seeders Only
php artisan vendor:publish --tag=wilindo-seeders
📊 Data Kemendagri dari Layanan SPLP
Tabel statis ini dibuat pada: 29 September 2025 | Data real-time dari API SPLP Kemendagri
| Kode Provinsi | Nama Provinsi | Kab/Kota | Kecamatan | Kel/Desa |
|---|---|---|---|---|
| 11 | Aceh | 23 | 290 | 6500 |
| 12 | Sumatera Utara | 33 | 455 | 6110 |
| 13 | Sumatera Barat | 19 | 179 | 1265 |
| 14 | Riau | 12 | 172 | 1862 |
| 15 | Jambi | 11 | 144 | 1585 |
| 16 | Sumatera Selatan | 17 | 241 | 3258 |
| 17 | Bengkulu | 10 | 129 | 1513 |
| 18 | Lampung | 15 | 229 | 2651 |
| 19 | Kepulauan Bangka Belitung | 7 | 47 | 393 |
| 21 | Kepulauan Riau | 7 | 80 | 419 |
| 31 | DKI Jakarta | 6 | 44 | 267 |
| 32 | Jawa Barat | 27 | 627 | 5957 |
| 33 | Jawa Tengah | 35 | 576 | 8563 |
| 34 | Daerah Istimewa Yogyakarta | 5 | 78 | 438 |
| 35 | Jawa Timur | 38 | 666 | 8494 |
| 36 | Banten | 8 | 155 | 1552 |
| 51 | Bali | 9 | 57 | 716 |
| 52 | Nusa Tenggara Barat | 10 | 117 | 1166 |
| 53 | Nusa Tenggara Timur | 22 | 315 | 3442 |
| 61 | Kalimantan Barat | 14 | 174 | 2145 |
| 62 | Kalimantan Tengah | 14 | 136 | 1571 |
| 63 | Kalimantan Selatan | 13 | 156 | 2016 |
| 64 | Kalimantan Timur | 10 | 105 | 1038 |
| 65 | Kalimantan Utara | 5 | 55 | 482 |
| 71 | Sulawesi Utara | 15 | 171 | 1839 |
| 72 | Sulawesi Tengah | 13 | 175 | 2017 |
| 73 | Sulawesi Selatan | 24 | 313 | 3059 |
| 74 | Sulawesi Tenggara | 17 | 221 | 2287 |
| 75 | Gorontalo | 6 | 77 | 729 |
| 76 | Sulawesi Barat | 6 | 69 | 648 |
| 81 | Maluku | 11 | 118 | 1235 |
| 82 | Maluku Utara | 10 | 118 | 1185 |
| 91 | P A P U A | 9 | 105 | 999 |
| 92 | Papua Barat | 7 | 86 | 824 |
| 93 | Papua Selatan | 4 | 82 | 690 |
| 94 | Papua Tengah | 8 | 131 | 1208 |
| 95 | Papua Pegunungan | 8 | 252 | 2627 |
| 96 | Papua Barat Daya | 6 | 132 | 1018 |
| Total | 38 | 514 | 7277 | 83768 |
📝 Catatan
- Data diambil dari API master_data_wilayah SPLP Kemendagri secara real-time
- API dapat diakses secara publik tanpa perlu akses jaringan internal pemerintah
- Proses seeding mungkin memakan waktu lama karena data yang besar
- Pastikan koneksi internet stabil saat menjalankan seeder
- Memory limit akan otomatis ditingkatkan untuk seeder desa/kelurahan
🤝 Kontribusi
Silakan buat issue atau pull request untuk perbaikan dan fitur baru.
📄 Lisensi
MIT License
Related Packages
Package containing region of Indonesia (provinces, regencies, districts, and vil...
A laravel app that is built on ng-places api, it provides places in Nigeria like...
Laravel ID Cities is a package for Laravel to supply all cities data to table ci...
A Laravel 5 Package for providing a fluent API for states, lgas and cities in Ni...