Merhaba,
Araçlar ve Rezervasyonlar tablom var. Bir araç kiralandığında aracı pasife alıyordum fakat ileri tarihli bir rezervasyon yapılabileceğinden aracı pasif e almak yeterli çözüm olmuyor. Bundan dolayı aracın aktiflik durumunu sorgularken rezervasyon listesinde ilgili tarih aralığında kayıt var mı diye bakacağım, daha doğrusu aktif araçları listelerken buna bakacağım.
VehicleController => index
public function index()
{
$vehicles = Vehicle::where("dealer_user_id", Auth::id())
->active()
->with(["options", "language", "rentalPoint", "vehicleOptions", "reservations.customer"])
->paginate(100);
return response()
->view("domain.dealer.vehicle.index", [
"vehicles" => $vehicles
]);
}
Vehicle isimli model içinde tanımlı active methodum:
public function scopeActive($query, $date = null)
{
$date = $date ?? Carbon::now()->startOfDay();
return $query->whereDoesntHave("reservations", function ($reservation) use ($date) {
return $reservation->whereDate("start_date", ">", $date)
->orWhereDate("ending_date", "<", $date);
});
}
Reservation tablomda vehicle ile ilgili alanlar:
- vehicle_id
- start_date
- ending_date
Deneme amaçlı 2020-10-03 00:00:00 - 2020-10-11 00:00:00 tarihleri arası bir rezervasyon eklediğimde ilgili araç arama sonuçlarında çıkmıyor. Ben belirttiğim tarihte araç rezerve edilmiş mi diye kontrol etmek istiyorum.
Bunu yaptıktan sonra belirli aralıkta da sorgulama yapmam gerekecek. Mesela 2020-10-03 - 2020-10-11 tarihleri arasında herhangi bir gün için rezerve edilmiş mi diye.