本文介绍了从租赁表中租赁可用的汽车的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的桌子上有租金

id| user_id| car_id | starting_date | ending_date

这是汽车桌子

id | name

我不知道该怎么处理.我有N辆车,我只想退还特定日期的可用车.

I don't know how to habndle the situation.. I have N cars, and I want to return only available cars for specific dates.

例如,我想在此期间租一辆车:20.02.2018-23.02.2018

For example I want to rent a car on this period:20.02.2018 - 23.02.2018

但是我不知道如何使用Laravel来检查每种情况下的汽车是否可用.

But I don't know how to check every case to see if a car is available in that period using 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模型中定义它:

If you don't have the relationship, define it in the Car model:

public function rentals()
{
    return $this->hasMany(Rental::class);
}

这篇关于从租赁表中租赁可用的汽车的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 19:34