【问题标题】:Check date range is not already booked in laravel?检查日期范围是否尚未在 laravel 中预订?
【发布时间】:2019-09-22 17:56:55
【问题描述】:

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

 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 查询?

【问题讨论】:

  • 你检查过这个Link
  • 为什么您不将输入日期与该特定自行车的预订日期进行比较,或者最好不要显示要选择的那些自行车。
  • 谢谢@Hamelraj 成功了:)
  • @Raghu 请按到那个链接

标签: php mysql laravel


【解决方案1】:

您可以使用 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'));
})

【讨论】:

  • 这不适用于将日期范围与两个不同的输入日期进行比较,例如用户提交的开始和结束与数据库开始和结束日期范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多