jobmetric / laravel-location
This is a website location management package for Laravel that you can use in your projects.
Installs: 18
Dependents: 1
Suggesters: 0
Security: 0
Stars: 7
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/jobmetric/laravel-location
Requires
- php: >=8.0.1
- jobmetric/laravel-language: ^1.16
- jobmetric/panelio: ^1.13
- laravel/framework: >=9.19
- spatie/laravel-query-builder: ^6.3
Requires (Dev)
- phpunit/phpunit: ^10.1
README
Laravel Location
Location Management for Laravel. Structured. Scalable.
Laravel Location helps you model and manage geographic data in a clean, consistent way—from Countries and Provinces to Cities, Districts, Locations, Geo Areas and Addresses. It is designed to be used as a reusable package in real-world Laravel applications where location data needs to be normalized and shared across multiple models.
Why Laravel Location?
A clean hierarchy: Country → Province → City → District
Keep your geographical data normalized and queryable with a clear relational hierarchy. This makes reporting, filtering, and validation much easier across your application.
Reusable Locations, Geo Areas and Addresses
- Locations are stored as unique records (country/province/city/district combination).
- Geo Areas can reference multiple locations (non-duplicated).
- Addresses can be attached to any model (polymorphic) and are stored with a location relation.
Service-first API + Facades
Each entity is managed through a dedicated service and convenient Facades:
Country,Province,City,DistrictLocation,GeoArea,Address
This keeps controllers thin and makes the package easy to integrate and test.
Quick Start
Install via Composer:
composer require jobmetric/laravel-location
Run migrations:
php artisan migrate
Optionally publish config/translations (if you need to override defaults):
php artisan vendor:publish --provider="JobMetric\\Location\\LocationServiceProvider"
Usage (Examples)
Store a country using the Facade:
use JobMetric\Location\Facades\Country; $response = Country::store([ 'name' => 'Iran', 'flag' => 'iran.svg', 'mobile_prefix' => 98, 'validation' => [ '/^9\\d{9}$/', ], 'address_on_letter' => "{country}, {province}, {city}\n{district}, {street}, {number}", 'status' => true, ]);
Attach address/geo areas to your models using traits:
use Illuminate\Database\Eloquent\Model; use JobMetric\Location\HasAddress; use JobMetric\Location\HasGeoArea; class User extends Model { use HasAddress; } class Shipping extends Model { use HasGeoArea; }
Documentation
Documentation for Laravel Location is available here:
The documentation includes:
- Getting Started - Installation and configuration
- Traits -
HasAddress,HasGeoArea,HasLocation - Services & Facades - Complete API reference
- Requests & Resources - Validation and API responses
- Events - Hook into lifecycle events
- Testing - How to run package tests and expected patterns
Contributing
Thank you for participating in laravel-location. A contribution guide can be found here.
License
The laravel-location is open-sourced software licensed under the MIT license. See License File for more information.