hitech / indonesia-laravel
Indonesia Laravel - Data terbaru daerah-daerah di indonesia termasuk 38 provinsi.
v1.0.1
2025-06-19 13:37 UTC
Requires
- php: ^8.1
- illuminate/console: ^12.19
- illuminate/database: ^12.19
- illuminate/support: ^12.19
Requires (Dev)
- phpunit/phpunit: ^11.5
- tightenco/duster: ^3.2
README
Package Laravel untuk data wilayah Indonesia terlengkap dan terbaru
Data terbaru daerah-daerah di Indonesia termasuk 38 provinsi, kabupaten/kota, kecamatan, dan desa/kelurahan
β¨ Fitur Utama
- πΊοΈ Data Lengkap: 38 Provinsi, 514+ Kabupaten/Kota, 7000+ Kecamatan, 83000+ Desa/Kelurahan
- π Multi-Language: Mendukung Bahasa Indonesia (ID) dan English (EN)
- π Pencarian Cerdas: Fitur search yang powerful untuk semua level wilayah
- π Pagination: Built-in pagination untuk performa optimal
- π Relasi Eloquent: Relationship yang lengkap antar model
- βοΈ Konfigurasi Fleksibel: Customizable table prefix dan pattern
- π Easy Setup: Instalasi dan setup yang mudah dengan Artisan command
π¦ Instalasi
1. Install via Composer
composer require hitech/indonesia-laravel
2. Publish Konfigurasi dan Migration
# Publish semua file php artisan vendor:publish --provider="Hitech\IndonesiaLaravel\Providers\IndonesiaLaravelServiceProvider" # Atau publish secara terpisah php artisan vendor:publish --tag=config php artisan vendor:publish --tag=migrations
3. Jalankan Migration
php artisan migrate
4. Seed Database
php artisan indonesia:seed
βοΈ Konfigurasi
Setelah publish, edit file config/indonesia.php
:
return [ // Prefix untuk nama tabel 'table_prefix' => 'indonesia_', // Pattern bahasa: 'ID' untuk Indonesia, 'EN' untuk English 'pattern' => 'ID', // Enable/disable setiap modul (cooming soon) 'province' => ['enabled' => true], 'city' => ['enabled' => true], 'district' => ['enabled' => true], 'village' => ['enabled' => true], ];
π Penggunaan
Service Class (Recommended)
use Hitech\IndonesiaLaravel\Services\IndonesiaService; $indonesia = new IndonesiaService(); // Pencarian di semua wilayah $results = $indonesia->search('Jakarta')->all(); // Mendapatkan semua provinsi $provinces = $indonesia->allProvinces(); // Pencarian provinsi dengan pagination $provinces = $indonesia->search('Jawa')->paginateProvinces(10); // Mendapatkan provinsi dengan relasi $province = $indonesia->findProvince(1, ['cities', 'villages']); // Mendapatkan kota berdasarkan provinsi $cities = $indonesia->findCitiesByProvince(1); // Mendapatkan kecamatan berdasarkan kota $districts = $indonesia->findDistrictsByCity(1); // Mendapatkan desa berdasarkan kecamatan $villages = $indonesia->findVillagesByDistrict(1);
Direct Model Usage
use Hitech\IndonesiaLaravel\Models\Province; use Hitech\IndonesiaLaravel\Models\City; use Hitech\IndonesiaLaravel\Models\District; use Hitech\IndonesiaLaravel\Models\Village; // Mendapatkan semua provinsi $provinces = Province::all(); // Pencarian provinsi $provinces = Province::search('Jawa')->get(); // Provinsi dengan kota-kotanya $province = Province::with('cities')->find(1); // Kota dengan kecamatan dan desa $city = City::with('districts.villages')->find(1);
Contoh Relasi
// Mendapatkan provinsi dari sebuah desa $village = Village::with('district.city.province')->find(1); $provinceName = $village->district->city->province->name; // Mendapatkan semua desa dalam sebuah provinsi $province = Province::with('cities.districts.villages')->find(1); foreach ($province->cities as $city) { foreach ($city->districts as $district) { foreach ($district->villages as $village) { echo $village->name; } } }
π Struktur Database
Tabel yang Dibuat
indonesia_provinces
- Data provinsiindonesia_cities
- Data kabupaten/kotaindonesia_districts
- Data kecamatanindonesia_villages
- Data desa/kelurahan
Kolom Dinamis Berdasarkan Pattern
Pattern 'ID' (Bahasa Indonesia):
kode_provinsi
,nama_provinsi
kode_kabupaten
,nama_kabupaten
kode_kecamatan
,nama_kecamatan
kode_desa
,nama_desa
Pattern 'EN' (English):
province_code
,province_name
city_code
,city_name
district_code
,district_name
village_code
,village_name
π Fitur Pencarian
$indonesia = new IndonesiaService(); // Pencarian di semua level wilayah $results = $indonesia->search('Bandung')->all(); // Pencarian spesifik per level $provinces = $indonesia->search('Jawa')->allProvinces(); $cities = $indonesia->search('Jakarta')->allCities(); $districts = $indonesia->search('Kemang')->allDistricts(); $villages = $indonesia->search('Cipete')->allVillages();
π Pagination
$indonesia = new IndonesiaService(); // Pagination dengan pencarian $provinces = $indonesia->search('Jawa')->paginateProvinces(15); $cities = $indonesia->search('Jakarta')->paginateCities(20); $districts = $indonesia->paginateDistricts(25); $villages = $indonesia->paginateVillages(30);
π οΈ Artisan Commands
# Seed database dengan data Indonesia php artisan indonesia:seed # Publish konfigurasi php artisan vendor:publish --tag=config # Publish migrations php artisan vendor:publish --tag=migrations
π Requirements
- PHP ^8.1
- Laravel ^12.19
- Illuminate Support ^12.19
- Illuminate Console ^12.19
- Illuminate Database ^12.19
π€ Contributing
Kontribusi sangat diterima! Silakan:
- Fork repository ini
- Buat branch fitur baru (
git checkout -b feature/amazing-feature
) - Commit perubahan (
git commit -m 'Add amazing feature'
) - Push ke branch (
git push origin feature/amazing-feature
) - Buat Pull Request
π License
Project ini menggunakan MIT License.
π¨βπ» Author
dhank77
- Email: d41113512@gmail.com
π Acknowledgments
- Data wilayah Indonesia dari berbagai sumber resmi
- Laravel Community
- Semua kontributor yang telah membantu
Dibuat dengan β€οΈ untuk Indonesia