kejubayer / bd-address-manager
Laravel package for managing Bangladesh address hierarchy (Division, District, Upazila, Union) with multilingual support, helper functions, and JSON seeder.
v1.0.0
2026-04-29 09:40 UTC
Requires
- php: >=7.4
- illuminate/support: ^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpunit/phpunit: ^9.0
README
A complete Laravel package for managing Bangladesh hierarchical address system:
Division โ District โ Upazila โ Union
Supports multilingual (English + Bangla), slug system, helper functions, caching, and full Laravel integration.
๐ Features
- ๐ Complete Bangladesh address hierarchy (Division โ District โ Upazila โ Union)
- ๐ English + Bangla support
- ๐ Slug-based system (SEO friendly)
- โก Eloquent relationships
- ๐ฑ JSON-based seeder system
- ๐งฉ Global helper functions
- ๐ Search across all levels
- ๐ฆ Dropdown helpers (UI ready)
- ๐ง Full address generator (EN + BN)
- ๐งน Cache optimized queries
- ๐ Artisan install command
- ๐ Extensible API-ready structure
๐ฆ Installation
Install via Composer:
composer require kejubayer/bd-address-manager
โ๏ธ Quick Setup (Recommended)
Run full installation in one command:
php artisan bd-address:install
๐ฅ Fresh Install (Reset DB)
php artisan bd-address:install --fresh --seed
๐๏ธ Manual Setup (Optional)
If you want full control:
1. Publish migrations
php artisan vendor:publish --tag=bd-address-migrations
2. Publish seeders
php artisan vendor:publish --tag=bd-address-seeders
3. Publish JSON data
php artisan vendor:publish --tag=bd-address-data
4. Run migrations
php artisan migrate
5. Run seeder
php artisan db:seed --class=BdAddressSeeder
๐๏ธ Database Structure
๐ bd_divisions
- id
- name_en
- name_bn
- slug
๐ bd_districts
- id
- division_id
- name_en
- name_bn
- slug
๐ bd_upazilas
- id
- district_id
- name_en
- name_bn
- slug
๐ bd_unions
- id
- upazila_id
- name_en
- name_bn
- slug
๐ง Usage (Helper Functions)
๐ Get all divisions
bd_divisions();
๐ Get districts by division
bd_districts($divisionId);
๐ Get upazilas by district
bd_upazilas($districtId);
๐ Get unions by upazila
bd_unions($upazilaId);
๐ Full Address Generator
English
echo bd_full_address($unionId);
Output:
Mirpur Union, Mirpur, Dhaka, Dhaka
Bangla
echo bd_full_address_bn($unionId);
๐ Search System
bd_search('mirpur');
Returns:
[ 'divisions' => [], 'districts' => [], 'upazilas' => [], 'unions' => [] ]
๐ Find by Slug
bd_find_by_slug('division', 'dhaka'); bd_find_by_slug('district', 'dhaka'); bd_find_by_slug('upazila', 'mirpur'); bd_find_by_slug('union', 'mirpur-union');
๐ฆ Dropdown Helpers (UI Ready)
Divisions
bd_division_dropdown();
Districts
bd_district_dropdown($divisionId);
Upazilas
bd_upazila_dropdown($districtId);
Unions
bd_union_dropdown($upazilaId);
โก Eloquent Usage
use Kejubayer\BdAddress\Models\Division; $divisions = Division::with('districts.upazilas.unions')->get();
๐ฑ JSON Seeder Structure
[
{
"name_en": "Dhaka",
"name_bn": "เฆขเฆพเฆเฆพ",
"districts": [
{
"name_en": "Dhaka",
"name_bn": "เฆขเฆพเฆเฆพ",
"upazilas": [
{
"name_en": "Mirpur",
"name_bn": "เฆฎเฆฟเฆฐเฆชเงเฆฐ",
"unions": [
{
"name_en": "Mirpur Union",
"name_bn": "เฆฎเฆฟเฆฐเฆชเงเฆฐ เฆเฆเฆจเฆฟเงเฆจ"
}
]
}
]
}
]
}
]
๐ Artisan Command
Install Package
php artisan bd-address:install
Fresh Install
php artisan bd-address:install --fresh --seed
โก Performance Features
- Cached division data (24h)
- Indexed slug columns
- Eager loading support
- Optimized helper queries
๐ Service Provider
Auto-loaded via:
Kejubayer\BdAddress\BdAddressServiceProvider::class
๐ Requirements
- PHP >= 7.4
- Laravel >= 8
๐ Roadmap
- REST API support
- Admin CRUD panel
- AJAX cascading dropdown UI
- Geo-location integration
- Redis cache layer
- Google Maps integration
๐จโ๐ป Author
Khondoker Eftakhar Jubayer Laravel Developer ERP & SaaS Builder Open Source Contributor
โญ Support
If you like this package, consider giving it a โญ on GitHub.