laravel还没有预订日期范围?

时间:2019-05-04 12:22:44

标签: php mysql laravel

我正在使用在线自行车预订系统。客户可以在其中预订特定日期时间范围的自行车。如果另一位客户在特定日期时间范围内预订了同一辆自行车,则我必须检查该自行车是否已被预订。 我的数据库表预订是这样的:

 id     bike_id      start_date             end_date
  1       1       2019-05-04 14:30      2019-05-04 15:30
  1       1       2019-05-04 16:30      2019-05-04 18:30

假设其他客户想要在2019-05-04 17:00到2019-05-04 19:30(即从start_date到end_date)预订自行车,则该自行车不可用。仅当在请求的日期时间范围内没有其他先前的预订重叠时,预订才可用。 如何在laravel中为此编写MySQL查询?

1 个答案:

答案 0 :(得分:0)

您可以使用whereRaw查看两列之间的日期

whereRaw('? between start_date and end_date', [date('Y-m-d')])

where(function ($q) {
  $q->where('start_date', '<=', date('Y-m-d'));
  $q->where('end_date', '>=', date('Y-m-d'));
})