edi-prasetyo / indonesia-location
Indonesia administrative region database for Laravel
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/edi-prasetyo/indonesia-location
Requires
- php: ^8.2
- illuminate/support: ^11.0|^12.0
README
edi-prasetyo/indonesia-location adalah package Laravel untuk menyediakan data wilayah administratif Indonesia (Provinsi, Kabupaten/Kota, Kecamatan, Desa) lengkap dengan relasi database dan model Eloquent.
Package ini dirancang untuk:
- Laravel 11 ke atas
- Import data wilayah Indonesia dari file JSON
- Relasi internal berbasis
id(bukan hanya kode) - Siap dipakai langsung oleh developer
✨ Fitur
- ✅ Data lengkap: Provinsi, Kabupaten/Kota, Kecamatan, Desa
- ✅ Relasi internal (
province_id,regency_id,district_id) - ✅ Tetap menyimpan
coderesmi wilayah Indonesia - ✅ Eloquent Model siap pakai
- ✅ Artisan command untuk install & import data
- ✅ Bisa digunakan untuk Web & Mobile API
📦 Instalasi
Install package via Composer:
composer require edi-prasetyo/indonesia-location
Package ini mendukung auto-discovery, tidak perlu menambahkan Service Provider secara manual.
1️⃣ Publish file migration
php artisan vendor:publish --tag=indonesia-location-migrations
2️⃣ Jalankan migration
php artisan migrate
🚀 Import Data Wilayah Indonesia
Jalankan command berikut:
php artisan indonesia-location:install
Struktur Database
provinces
| column | type |
|---|---|
| id | bigint |
| code | string |
| name | string |
| latitude | decimal |
| longitude | decimal |
regencies
| column | type |
|---|---|
| id | bigint |
| province_id | bigint (FK) |
| code | string |
| province_code | string |
| name | string |
| latitude | decimal |
| longitude | decimal |
districts
| column | type |
|---|---|
| id | bigint |
| province_id | bigint (FK) |
| regency_id | bigint (FK) |
| code | string |
| province_code | string |
| regency_code | string |
| name | string |
| latitude | decimal |
| longitude | decimal |
villages
| column | type |
|---|---|
| id | bigint |
| province_id | bigint (FK) |
| regency_id | bigint (FK) |
| district_id | bigint (FK) |
| code | string |
| province_code | string |
| regency_code | string |
| district_code | string |
| name | string |
| postal_code | string |
| latitude | decimal |
| longitude | decimal |
📘 Penggunaan Model
- use EdiPrasetyo\IndonesiaLocation\Models\Province;
- use EdiPrasetyo\IndonesiaLocation\Models\Regency;
- use EdiPrasetyo\IndonesiaLocation\Models\District;
- use EdiPrasetyo\IndonesiaLocation\Models\Village;
Ambil semua provinsi
use EdiPrasetyo\IndonesiaLocation\Models\Province; $provinces = Province::all();
Dengan relasi
$provinces = Province::with('regencies.districts.villages')->get();
Contoh pencarian
$aceh = Province::where('code', '11')->first(); $kabupaten = $aceh->regencies;
🔗 Relasi Eloquent
- Province → hasMany → Regencies
- Regency → hasMany → Districts
- District → hasMany → Villages
Semua relasi menggunakan foreign key berbasis ID untuk performa optimal.
⚙️ Kebutuhan Sistem
- PHP 8.2+
- Laravel 11 atau lebih baru
- Database MySQL / PostgreSQL
📄 Lisensi
Package ini dilisensikan di bawah MIT License.
👨💻 Author
Edi Prasetyo GitHub: https://github.com/edi-prasetyo
🤝 Kontribusi
Pull request & issue sangat diterima. Silakan fork repository ini dan ajukan perubahan.
⭐ Penutup
Jika package ini membantu, jangan lupa beri ⭐ di GitHub 🙌
Happy coding 🚀