Laravel uygulamanızda bir ülke listesine ihtiyaç duyduysanız — örneğin, bir kayıt formu, bir gönderim hesaplayıcısı veya “Ülkenizi seçin” dropdown’u için — muhtemelen uzak bir API’ye başvurdunuz.
Bu genellikle şu şekilde görünür:
$response = Http::get('https://some-country-api.example/countries');
$countries = $response->json();
Bu çalışır, ta ki çalışmayana dek:
- API kapalı ve kayıt formunuz bozuldu
- Bir trafik artışında hız sınırına ulaştınız
- Ülke isimlerini Portekizce ve İspanyolca’ya ihtiyacınız var, API sadece İngilizce geri döndürüyor
- CI pipeline’ınız gerçek HTTP çağrıları yapıyor (ve daha kötüsü, bunları kötü bir şekilde taklit ediyor)
Bunlar sıradan kenar durumları değildir — bunlar, uygulamanızın temel bir veri parçasının başka birinin sunucusunda yaşadığı durumlar.
A Different Approach: Put the Data in Your Own Database
Laravel Countries daha basit bir yaklaşım benimser: Ülke verilerini her seferinde bir API çağrısı yapmak yerine, verinizi bir kez kendi veritabanınıza ekleyin ve sonrasında Eloquent modeli gibi sorgulayın.
| Laravel Countries | Tipik Uzak Ülke API’si | |
|---|---|---|
| Veri nerede yaşar | Sizin kendi veritabanınızda | Uzak bir sunucuda |
| Çalışır durumda / CI’da | ✅ | ❌ |
| Hız sınırları | Yok | Sıklıkla var |
| Çeviriler dahil | 9 dil, kutudan çıktığı gibi | Genellikle sadece İngilizce |
| Eloquent ile sorgulama | ✅ — bu bir model | Genellikle özel bir HTTP istemcisi |
| Her talep için ek ağ çağrıları | 0 | 1+ |
Installing It
composer require lwwcas/laravel-countries
php artisan w-countries:install
Bu tek komut, ülke, bölge ve çevirileri içeren migrations’ları çalıştırır ve veritabanına ekler. İlk olarak düzenlemeniz gereken herhangi bir konfigürasyon dosyası yok, kendiniz JSON indirip ayrıştırmak zorunda kalmazsınız.
Querying Countries Like Any Other Model
Bir kez eklendikten sonra, ülkeler tam olarak uygulamanızın diğer verileri gibi davranır:
use Lwwcas\LaravelCountries\Models\Country;
Country::whereIso('BR')->first();
Country::whereIsoAlpha3('BRA')->first();
Country::whereSlug('brasil')->first();
Bir ülkenin adını belirli bir dilde mi ihtiyacınız var? Çeviriler birinci sınıf, ekleme yapıştırma değil — paket, kutudan 9 dil ile gelir: Arapça, Hollandaca, İngilizce, Almanca, İtalyanca, Portekizce, Rusça, İspanyolca ve Türkçe.
Production and CI, Without the Awkward Prompts
Laravel, normalde üretimde seeders’ı çalıştırmadan önce onay ister. Laravel Countries bunu otomatik olarak yönetir:
php artisan w-countries:install --force
Ve eğer migrate işlemleriniz deploy sırasında zaten gerçekleştirilmişse ve sadece verilere ihtiyacınız varsa:
php artisan w-countries:seed --languages=en,pt,es
Her iki komut da doğrudan bir deploy script’ine eklemek için güvenlidir — gizli onay istemleri yok, girdi bekleyen sürecin takılıp kalması yok.
Why This Matters More Than It Sounds
Ülke verileri, küçük bir şey gibi görünebilir, ta ki kayıt akışınızın üretimde arızalanmasına ya da test suite’inizin çalışması için ağ erişimine ihtiyaç duymasına neden olana kadar. Verileri kendi veritabanınıza taşımak, “bugün neden başarısız oldu?” kategorisinde bir tüm sebebi ortadan kaldırır — veri sadece… orada, şemanızın geri kalanıyla sürümlenmiş, CI’de her şey gibi test edilmiştir.
Try It Out
composer require lwwcas/laravel-countries
php artisan w-countries:install
Eğer bunu kendiniz inşa etmekten kurtaracaksa, repoya bir yıldız vermek diğer geliştiricilerin bunu bulmasına gerçekten yardımcı olur:
👉 github.com/lwwcas/laravel-countries
Üretim dağıtımı ve manuel seeder sınıflarıyla ilgili tam belgeler burada: lwwcas.github.io/laravel-countries
Bir dil eksikse veya düzeltilmesi gereken bir çeviri bulduysanız, katkılarınız çok hoş karşılanır — çeviri incelemeleri hakkında CONTRIBUTING.md‘ye göz atın.
Kaynak: Orijinal Makale


