Merhaba iyi forumlar,
Seçilen şehre göre ilçe filtreleme yaptım. Fakat tekrar filtreleme sorgusu yapıldığında hiç bir ilçe seçilmediyse WhereIn kullanmak istemiyorum. Zaten öyle yaparsam boş geldiği için sorgu düzgün çalışmıyor. Yazdığım kod kısaca şu şekilde.
if(empty($townIds)) {
switch ($place) {
case 'dugun':
$places = Place::where('city_id', $cityId)->where('wedding', 1)->get();
break;
case 'nisan':
$places = Place::where('city_id', $cityId)->where('sighting', 1)->get();
break;
case 'kina':
$places = Place::where('city_id', $cityId)->where('henna', 1)->get();
break;
case 'sunnet':
$places = Place::where('city_id', $cityId)->where('circumcision', 1)->get();
break;
}
}else {
switch ($place) {
case 'dugun':
$places = Place::whereIn('town_id', $townIds)->where('wedding', 1)->where('city_id', $cityId)->get();
break;
case 'nisan':
$places = Place::whereIn('town_id', $townIds)->where('sighting', 1)->where('city_id', $cityId)->get();
break;
case 'kina':
$places = Place::whereIn('town_id', $townIds)->where('henna', 1)->where('city_id', $cityId)->get();
break;
case 'sunnet':
$places = Place::whereIn('town_id', $townIds)->where('circumcision', 1)->where('city_id', $cityId)->get();
break;
}
}
if else yerine bunu whereIn'deki değer boş ise dikkata almaması için ne yapabilirim. Biraz araştırdım şu tarz bir sorguya denk geldim fakat tam anlayamadım. Yardımcı olursanız sevinirim.
$query = Model::where('field1', 1)
->whereNull('field2')
->where(function ($query) {
$query->where('datefield', '<', $date)
->orWhereNull('datefield');
}
);