Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Incidents
Semptom
Konum ekleme popup’ında (HierarchicalLocationForm) ve LocationSelector’da şehir listesi yerine tüm konumlar gelmeye başladı. İlçe seçiminde de arama düzgün çalışmıyordu.
Root Cause
API’de genel bir değişiklik yapıldı: filter[field]='' (boş string) artık “field IS NULL” anlamına gelmiyor, filter tamamen ignore ediliyor.
Yeni davranış: nulls[]=field_name parametresi gönderilmeli.
// Eski (artık çalışmıyor)
filter[parent_id]=
// Yeni (doğru)
nulls[]=parent_id
API’deki IndexLocationRequest’te HasNulls trait ile includeNulls(['parent_id']) tanımlı. nulls[] parametresi Laravel side’da WHERE parent_id IS NULL sorgusuna dönüşüyor.
Etkilenen Dosyalar
src/components/common/HierarchicalLocationForm.tsx— loadCitiessrc/components/common/LocationSelector.tsx— loadCitiessrc/pages/locations/page.tsx— fetchCities
Çözüm
Her üç dosyada 'filter[parent_id]': '' → 'nulls[]': 'parent_id' olarak güncellendi.
Ek olarak: ilçe araması server-side’a taşındı (filter[name] + 300ms debounce), çünkü per-page: 1000 API tarafından limitleniyor ve tüm ilçeler gelmiyor olabiliyordu.
Dikkat: Diğer Entiteler
Bu değişiklik API genelinde geçerli. filter[herhangi_alan]='' ile null filtresi yapılan tüm yerler kontrol edilmeli. Pattern:
// NULL filtresi için artık şunu kullan:
'nulls[]': 'alan_adi'
// Diğer entity'lerin request'lerinde de HasNulls/includeNulls varsa aynı sorun olabilirRelated
- konum-sistemi — Konum hiyerarşisi ve API filtreleri
- servis-katmani — LocationService.getWithParams kullanımı