Skip to main content

Manage Locations. Normalize Geography. Reuse Address Data.

Laravel Location provides a structured, scalable way to model geographic data in Laravel: Countries, Provinces, Cities, Districts, Locations, Geo Areas, and Addresses.

It is built for real-world systems where location data is shared across multiple modules and must remain consistent, normalized, and queryable.

Why Laravel Location?

A clean hierarchy

Use a normalized hierarchy (Country → Province → City → District) and query it easily across your application.

Reusable “Location” records

Locations are stored as unique combinations of (country, province, city, district). The package uses firstOrCreate() to prevent duplicates and ensure referential integrity.

Polymorphic attachments

  • Attach Addresses to any model via HasAddress
  • Attach Geo Areas to any model via HasGeoArea
  • Attach Locations as a single or multiple relation via HasLocation

Service-first API (with Facades)

Work with a clean service layer using facades: Country, Province, City, District, Location, GeoArea, Address.

Ready to get started?