Skip to content

Model & Relasi ​

Bangun aplikasi berbasis lokasi dengan model Eloquent komprehensif Laravel Nusa. Model-model ini menyediakan fondasi untuk mengintegrasikan struktur administratif Indonesia ke dalam logika bisnis Anda, mulai dari analitik tingkat nasional hingga operasi spesifik desa/kelurahan.

Mengapa Menggunakan Model Laravel Nusa? ​

🎯 Cakupan Administratif Lengkap ​

Bekerja dengan setiap tingkat hierarki administratif Indonesia - dari 38 provinsi hingga 83.762 desa/kelurahan. Cakupan komprehensif ini memastikan aplikasi Anda dapat menangani setiap persyaratan berbasis lokasi.

⚡ Relasi Siap Pakai ​

Relasi Eloquent yang sudah dibangun menangani kompleksitas struktur hierarkis Indonesia, memungkinkan Anda untuk fokus pada logika bisnis Anda daripada manajemen data.

🔄 Sumber Data Resmi ​

Model-model ini bekerja dengan data yang disinkronkan dari sumber resmi pemerintah, memastikan aplikasi Anda memiliki informasi administratif yang akurat dan terkini.

Memahami Hierarki Administratif ​

📊 Struktur Empat Tingkat ​

🇮🇩 Indonesia
├── 38 Provinsi → Operasi regional strategis
├── 514 Kabupaten/Kota → Layanan tingkat kota dan kabupaten
├── 7.285 Kecamatan → Layanan komunitas dan lokal
└── 83.762 Desa/Kelurahan → Penargetan lokasi yang tepat

Detail Teknis

Untuk informasi rinci tentang struktur database, relasi, dan implementasi teknis, lihat Ikhtisar Model di Referensi API.

🏢 Aplikasi Bisnis ​

Platform E-Commerce: Zona pengiriman, optimasi pengiriman, dan segmentasi pelanggan Sistem Kesehatan: Manajemen fasilitas, demografi pasien, dan cakupan layanan Layanan Keuangan: Penilaian risiko, perencanaan cabang, dan kepatuhan regulasi Layanan Pemerintah: Manajemen warga, alokasi sumber daya, dan pelaporan administratif

Fitur Model yang Kuat ​

🔍 Pencarian Cerdas ​

Temukan lokasi apa pun secara instan dengan kemampuan pencarian cerdas kami:

php
// Cari berdasarkan nama - berfungsi dengan pencocokan parsial
$provinces = Province::search('jawa')->get();
// Mengembalikan: Jawa Barat, Jawa Tengah, Jawa Timur

// Cari berdasarkan kode - pencocokan persis
$jakarta = Province::search('31')->first();

// Kasus penggunaan bisnis: Pencarian lokasi pelanggan
$customerRegency = Regency::search($userInput)->first();

Manfaat: Membantu pelanggan dengan cepat menemukan lokasi mereka, meningkatkan kegunaan formulir dan pengalaman pengguna.

🌍 Intelijen Geografis ​

Setiap model menyertakan data geografis untuk fitur lokasi canggih:

php
// Akses kode administratif resmi
$village->code;        // "33.74.01.1001"
$village->name;        // "Medono"

// Batas geografis untuk pemetaan
$province->coordinates; // Array titik batas
$province->latitude;    // Koordinat pusat
$province->longitude;   // Koordinat pusat

Manfaat: Memungkinkan fitur pemetaan, perhitungan area layanan, dan fungsionalitas berbasis lokasi.

Solusi Bisnis berdasarkan Tingkat Administratif ​

🏛️ Tingkat Provinsi: Operasi Strategis ​

Sempurna untuk: Ekspansi regional, analisis pasar, pelaporan kepatuhan

php
use Creasi\Nusa\Models\Province;

// Analisis pasar: Temukan wilayah berpotensi tinggi
$javaProvinces = Province::search('jawa')->get();
foreach ($javaProvinces as $province) {
    echo "Pasar: {$province->name}";
    echo "Kota: {$province->regencies->count()}";
    echo "Cakupan: {$province->villages->count()} desa/kelurahan";
}

// Kepatuhan: Hasilkan laporan regional
$centralJava = Province::find('33');
$report = [
    'region' => $centralJava->name,
    'postal_codes' => $centralJava->postal_codes,
    'administrative_units' => $centralJava->regencies->count()
];

Manfaat:

  • Analisis Regional: Memahami cakupan pasar dan peluang berdasarkan provinsi
  • Pelaporan Kepatuhan: Menghasilkan laporan regional yang akurat untuk persyaratan administratif
  • Perencanaan Strategis: Menganalisis cakupan geografis dan kemungkinan ekspansi

→ Referensi Model Provinsi Lengkap

🏙️ Tingkat Kabupaten/Kota: Operasi Kota ​

Sempurna untuk: Logistik perkotaan, layanan spesifik kota, kemitraan lokal

php
use Creasi\Nusa\Models\Regency;

// Logistik: Optimalkan pengiriman tingkat kota
$semarang = Regency::search('semarang')->first();
$deliveryZones = $semarang->districts->groupBy('postal_code');

// Ekspansi bisnis: Analisis pasar kota
$jakartaRegencies = Regency::whereHas('province', function ($query) {
    $query->where('code', '31'); // DKI Jakarta
})->get();

foreach ($jakartaRegencies as $regency) {
    echo "Kota: {$regency->name}";
    echo "Kecamatan: {$regency->districts->count()}";
    echo "Ukuran pasar: {$regency->villages->count()} komunitas";
}

Manfaat:

  • Operasi Perkotaan: Mengatur logistik tingkat kota dan pengiriman layanan
  • Analisis Lokal: Memahami karakteristik pasar spesifik kota
  • Perencanaan Regional: Merencanakan operasi di berbagai wilayah perkotaan

→ Referensi Model Kabupaten/Kota Lengkap

🏘️ Tingkat Kecamatan: Layanan Komunitas ​

Sempurna untuk: Layanan lokal, keterlibatan komunitas, operasi lapangan

php
use Creasi\Nusa\Models\District;

// Kesehatan: Kelola area cakupan klinik
$district = District::find('33.75.01');
$serviceArea = [
    'district' => $district->name,
    'regency' => $district->regency->name,
    'villages_served' => $district->villages->count(),
    'estimated_population' => $district->villages->count() * 1000
];

// Operasi lapangan: Optimalkan rute layanan
$districts = District::where('regency_code', '33.74')->get();
foreach ($districts as $district) {
    echo "Area layanan: {$district->name}";
    echo "Desa/Kelurahan: {$district->villages->count()}";
    echo "Koordinat: {$district->latitude}, {$district->longitude}";
}

Manfaat:

  • Layanan Lokal: Mengatur pengiriman layanan tingkat komunitas
  • Operasi Lapangan: Merencanakan rute dan cakupan untuk tim lapangan
  • Perencanaan Layanan: Memahami area layanan lokal dan cakupan

→ Referensi Model Kecamatan Lengkap

🏠 Tingkat Desa/Kelurahan: Penargetan Presisi ​

Sempurna untuk: Pengiriman last-mile, penargetan pelanggan, analitik presisi

php
use Creasi\Nusa\Models\Village;

// E-commerce: Perencanaan pengiriman yang tepat
$village = Village::find('33.75.01.1002');
$deliveryInfo = [
    'village' => $village->name,
    'postal_code' => $village->postal_code,
    'full_address' => [
        $village->name,
        $village->district->name,
        $village->regency->name,
        $village->province->name
    ],
    'coordinates' => [$village->latitude, $village->longitude]
];

// Analitik pelanggan: Wawasan demografi
$customerVillages = Village::whereIn('code', $customerVillageCodes)
    ->with(['district.regency.province'])
    ->get();

$demographics = $customerVillages->groupBy('province.name')
    ->map(function ($villages, $province) {
        return [
            'province' => $province,
            'customer_villages' => $villages->count(),
            'market_penetration' => $villages->count() / 1000 // desa/kelurahan per 1000
        ];
    });

Manfaat:

  • Pengiriman Presisi: Pengalamatan yang akurat dengan dukungan kode pos
  • Segmentasi Pelanggan: Analisis pelanggan geografis yang terperinci
  • Wawasan Lokal: Data tingkat desa/kelurahan untuk operasi yang ditargetkan

→ Referensi Model Desa/Kelurahan Lengkap

Relasi Cerdas & Kinerja ​

🔗 Relasi Hierarkis yang Cerdas ​

Setiap model memahami tempatnya dalam struktur administratif Indonesia:

php
// Navigasi hierarki dengan mudah
$village = Village::find('33.75.01.1002');

// Akses tingkat apa pun secara instan
echo $village->name;              // "Medono"
echo $village->district->name;    // "Pekalongan Barat"
echo $village->regency->name;     // "Kota Pekalongan"
echo $village->province->name;    // "Jawa Tengah"

// Intelijen bisnis dalam satu kueri
$customerAnalysis = $village->province->regencies()
    ->withCount(['villages', 'districts'])
    ->get();

⚡ Kinerja Tingkat Perusahaan ​

Dibangun untuk skala dengan optimasi cerdas:

php
// Operasi massal yang efisien
$marketAnalysis = Province::with(['regencies:code,name,province_code'])
    ->whereIn('code', ['31', '32', '33']) // Provinsi Jawa
    ->get();

// Paginasi cerdas untuk dataset besar
$villages = Village::where('regency_code', '33.74')
    ->paginate(50); // Tangani 83K+ desa/kelurahan secara efisien

// Pencarian yang dioptimalkan di jutaan catatan
$locations = Village::search('jakarta')->limit(10)->get();

Skenario Implementasi Umum ​

📈 Aplikasi E-Commerce ​

Fitur berbasis lokasi untuk zona pengiriman, optimasi pengiriman, dan segmentasi pelanggan berdasarkan wilayah administratif.

🏥 Sistem Kesehatan ​

Manajemen fasilitas, analisis demografi pasien, dan perencanaan cakupan layanan menggunakan data administratif hierarkis.

🚚 Aplikasi Logistik ​

Perencanaan rute, manajemen area layanan, dan optimasi pengiriman menggunakan struktur administratif Indonesia.

Pola Integrasi ​

🎯 Integrasi Cepat ​

php
// Tambahkan lokasi ke model yang sudah ada
class Customer extends Model
{
    use WithVillage; // Kemampuan lokasi instan
}

🏢 Integrasi Perusahaan ​

php
// Persyaratan bisnis yang kompleks
class BusinessLocation extends Model
{
    use WithAddresses, WithCoordinate;
    // Beberapa lokasi + koordinat GPS
}

🚀 Analitik Lanjutan ​

php
// Intelijen bisnis siap
$marketInsights = Province::withCount(['regencies', 'villages'])
    ->with(['regencies' => function ($query) {
        $query->withCount('villages');
    }])
    ->get();

Memulai ​

Model Laravel Nusa menyediakan fondasi yang kuat untuk membangun aplikasi berbasis lokasi yang bekerja dengan struktur administratif Indonesia.

Langkah Selanjutnya: ​

  1. Ikhtisar Model - Detail teknis, struktur database, dan relasi
  2. Panduan Kustomisasi - Pelajari cara mengintegrasikan model dengan aplikasi Anda
  3. Manajemen Alamat - Jelajahi fungsionalitas alamat
  4. Contoh Implementasi - Lihat pola penggunaan praktis

Bangun aplikasi berbasis lokasi dengan data administratif Indonesia yang komprehensif.

Released under the MIT License.