English · فارسی
A Laravel package that imports Iran's administrative divisions — provinces, counties, sectors, cities, city districts, rural districts, and villages — into your database with Artisan commands. Includes Eloquent models, relationships, and optional city coordinates.
composer require salibhdr/typhoon-iran-cities
php artisan iran:init --no-interaction --forceRequires Laravel 13 and PHP 8.3+ on the latest release. Older Laravel apps should use ^3.1 — see the version matrix.
Full documentation lives in docs/ — available in English and Persian (فارسی).
| English | فارسی | |
|---|---|---|
| Start here | English docs | مستندات فارسی |
| Hub / TOC | docs/README.md | same |
| Topic | EN | FA |
|---|---|---|
| Introduction | → | → |
| Requirements & versioning | → | → |
| Installation | → | → |
| Quick start | → | → |
| Storage modes (separate / unite) | → | → |
| Commands reference | → | → |
| Models & relationships | → | → |
| Status field | → | → |
| City coordinates | → | → |
| Upgrade guide | → | → |
| FAQ & troubleshooting | → | → |
| Testing & contributing | → | → |
- All seven official division levels with relational data and codes
- Separate tables (default) or unite mode (single
iran_regionstable) - Selective import with
--target(e.g. cities only) - Published migrations and models — you own the schema
- Active/inactive
statuswith hierarchy-aware scopes - City latitude/longitude via
--with-city-coordinates - Re-import with
--freshwhen upstream data updates
use App\Models\IranCity;
IranCity::active()
->with('county.province')
->orderBy('name')
->get();composer test
composer test:coverage # requires PCOVCoverage runs in CI on every push and PR — Codecov.
Published models extend SaliBhdr\TyphoonIranCities\Models\* — keep this package installed after iran:publish:models.
Published migrations are self-contained and do not reference the package namespace.
See CHANGELOG.md and the upgrade guide (EN) / راهنمای ارتقا (FA).
MIT License — Salar Bahador.
Data based on ahmadazizi/iran-cities v3.
Issues: GitHub · Contributions welcome.
Built with ❤ for you.
