我的桌子有租金
id| user_id| car_id | starting_date | ending_date
这是汽车表
id | name
我不知道该怎么处理。我有N辆车,我只想退还特定日期的可用车。
例如,我想在此期间租一辆车:
20.02.2018-23.02.2018
但是我不知道如何使用Laravel检查每种情况下的汽车在那个时期是否可用。
最佳答案
使用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);
}
关于php - 从租赁表中租赁可用的汽车,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48794200/