hoangphi/vietnam-maps

Vietnam's area database.

v1.3.4 2023-12-20 07:35 UTC

This package is auto-updated.

Last update: 2024-03-20 08:12:31 UTC


README

Database of Vietnam's area.

Data are taken directly from the General Statistics Office of Vietnam.

Latest Version on Packagist Total Downloads

Install

composer require hoangphi/vietnam-maps

Extracting

Method 1:

Extract directly via command:

php artisan vietnam-map:install

Method 2:

Copy file config và migration

php artisan vendor:publish --provider="HoangPhi\VietnamMap\VietnamMapServiceProvider"

Customize config và migration

  1. Rename table

Open file config/vietnam-maps.php and config:

'tables' => [
    'provinces' => 'provinces',
    'districts' => 'districts',
    'wards'     => 'wards',
],
  1. Rename column

Open file config/vietnam-maps.php and config:

'columns' => [
    'name'        => 'name',
    'gso_id'      => 'gso_id',
    'province_id' => 'province_id',
    'district_id' => 'district_id',
],
  1. Add column

Open the following migration files and customize if you need:

database/migrations/{datetime}_create_vietnam_maps_table.php

Run migration

php artisan migrate

Download và import into database

php artisan vietnam-map:download

Usage with Models

  1. Get all provinces, districts, wards
    use HoangPhi\VietnamMap\Models\Province;
    use HoangPhi\VietnamMap\Models\District;
    use HoangPhi\VietnamMap\Models\Ward;

   class DevController extends Controller
   {
       ...
       public function dev()
       {
           $provinces = Province::all();
           $districts = District::all();
           $wards = Ward::all();
           ...
       }
   }
  1. Get data using relationship
    use HoangPhi\VietnamMap\Models\Province;

   class DevController extends Controller
   {
       ...
       public function dev()
       {
           $province = Province::first();
           $districts = $province->districts;
           ...
       }
   }
  1. Relation in Province.php
    class Province extends Model
    {
        ...
        public function districts()
        {
            return $this->hasMany(District::class);
        }
    }
  1. Relation in District.php
    class District extends Model
    {
        ...
        public function province()
        {
            return $this->belongsTo(Province::class, config('vietnam-maps.columns.province_id'), 'id');
        }
        
        public function wards()
        {
            return $this->hasMany(Ward::class);
        }
    }
  1. Relation in Ward.php
    class Ward extends Model
    {
        ...
        public function district()
        {
            return $this->belongsTo(District::class, config('vietnam-maps.columns.district_id'), 'id');
        }
    }

Changelog

Please see CHANGELOG for more information what has changed recently.

Security

If you discover any security-related issues, please email hoangphidev@gmail.com instead of using the issue tracker.

Credits

References

  1. General Statistics Office of Vietnam
  2. Vietnam Zone

License

The Laravel framework is open-sourced software licensed under the MIT license.