我的桌子有租金

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/

10-13 01:33