我的桌子有租金
id| user_id| car_id | starting_date | ending_date
这里是汽车表
id | name
我不知道如何处理这种情况。我有N辆汽车,而且我想只返回特定日期的可用汽车。
例如我想在这段时间租一辆车: 20.02.2018 - 23.02.2018
但我不知道如何使用Laravel检查每一个案例,看看那段时间是否有车。
答案 0 :(得分:0)
使用whereDoesntHave()
方法。我假设你已经定义了rentals
关系:
$date1 = Carbon::parse('20.02.2018')->startOfDay();
$date2 = Carbon::parse('23.02.2018')->endOfDay();
$available = Car::whereDoesntHave('rentals', function($q) use($date1, $date2) {
$q->whereBetween('starting_date', [$date1, $date2])
->orWhereBetween('ending_date', [$date1, $date2])
->orWhere(function($q) use($date1, $date2) {
$q->where('starting_date', '<', $date1)
->where('ending_date', '>', $date2);
});
})
->get();
如果您没有这种关系,请在Car
模型中定义:
public function rentals()
{
return $this->hasMany(Rental::class);
}