1. Go to this page and download the library: Download kazistm/algeria-geo library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kazistm / algeria-geo example snippets
use KaziSTM\AlgeriaGeo\Models\City;
use KaziSTM\AlgeriaGeo\Models\Commune;
// Get all Cities (Wilayas), ordered by code
$cities = City::orderBy('code')->get();
// Get all Communes, ordered by name
$communes = Commune::orderBy('name')->get();
// Find a specific City by ID
$city = City::find(16); // Alger
// Find a specific Commune by ID
$commune = Commune::find(554); // Alger Centre
$algiersCity = City::find(16);
if ($algiersCity) {
// Access the collection of Communes belonging to the City
$algiersCommunes = $algiersCity->communes; // Returns Eloquent Collection
// You can also query the relationship
$firstCommune = $algiersCity->communes()->orderBy('name')->first();
}
$koubaCommune = Commune::find(571); // Kouba
if ($koubaCommune) {
// Access the City model the Commune belongs to
$city = $koubaCommune->city; // Returns City model (Alger)
echo "Commune: " . $koubaCommune->name . " belongs to City: " . $city->name;
// Output: Commune: Kouba belongs to City: Alger
}
$oranCity = City::findByCode(31); // Returns the City model for Oran, or null
if ($oranCity) {
echo "Found: " . $oranCity->name;
} else {
echo "City with code 31 not found.";
}
$commune = Commune::findByPostCode('31001'); // e.g., Oran
if ($commune) {
echo "Found Commune: " . $commune->name . " in City: " . $commune->city->name;
} else {
echo "Commune with post code 31001 not found.";
}
// Search Cities
$cities = City::searchByName('Bordj')->orderBy('name')->get();
// Search Communes
$communes = Commune::searchByName('وادي')->orderBy('name')->get();
// Chain with other constraints
$algiersCommunesStartingWithS = Commune::where('wilaya_id', 16)
->searchByName('S')
->orderBy('name')
->get();
$city = City::code(5)->first(); // Batna
$communes = Commune::postCode('05001')->get(); // Communes with this post code
// Find communes within 15km of central Algiers
$centerLat = 36.7753;
$centerLon = 3.0588;
$radiusKm = 15;
$nearbyCommunes = Commune::withinRadius($centerLat, $centerLon, $radiusKm, 'km')->get();
echo "Communes within {$radiusKm}km of {$centerLat},{$centerLon}:\n";
foreach ($nearbyCommunes as $comm) {
// Access the calculated distance
$distance = round($comm->distance, 2);
echo "- {$comm->getDisplayName()} ({$distance} km)\n";
}
// Find communes within 15km of central Algiers
$centerLat = 36.7753;
$centerLon = 3.0588;
$radiusKm = 15;
$nearbyCommunes = Commune::withinRadius($centerLat, $centerLon, $radiusKm, 'km')->get();
echo "Communes within {$radiusKm}km of {$centerLat},{$centerLon}:\n";
foreach ($nearbyCommunes as $comm) {
// Access the calculated distance
$distance = round($comm->distance, 2);
echo "- {$comm->getDisplayName()} ({$distance} km)\n";
}
$city = City::findBySlug('oran');
$commune = Commune::findBySlug('bir-el-djir');
$oranCity = City::findByCode(31);
$coords = $oranCity?->getCoordinates();
// $coords will be ['latitude' => 35.6987..., 'longitude' => -0.6349...] or null
$oranCommune = Commune::findByPostCode('31001');
$communeCoords = $oranCommune?->getCoordinates();
// $communeCoords will be ['latitude' => 35.6987..., 'longitude' => -0.6349...] or null
$city = City::find(16); // Alger
echo $city->getDisplayName(); // Output: Alger
echo $city->getDisplayName(true); // Output: الجزائر
$commune = Commune::find(554); // Alger Centre
echo $commune->getDisplayName(); // Output: Alger Centre
echo $commune->getDisplayName(true); // Output: الجزائر الوسطى
bash
# Run migrations only (if tables don't exist)
php artisan algeria-geo:install
# Run migrations AND seed the database (recommended for first install)
php artisan algeria-geo:install --seed
# Force migrations/seeding even if tables exist (use with caution!)
php artisan algeria-geo:install --seed --force
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.