【发布时间】:2017-07-18 04:15:20
【问题描述】:
我一直在做预订项目,我收集请求(time_start 和 time_end)并为每个请求添加 1:30 小时,这样我可以防止用户选择冲突。
我已经尝试使用“Between”,但它似乎不起作用。
->whereBetween('reservation_time_start', [$time_from, $time_to])
->whereBetween('reservation_time_end', [$time_from, $time_to])
我也试过了,
->whereRaw('((reservation_time_end <= ? AND reservation_time_end >= ?) OR (reservation_time_start >= ? AND reservation_time_start <= ?))',[$time_end, $time_start,$time_start, $time_end])
它有效,但在某些情况下,例如在某个时间范围内,我没有得到任何结果。像这样。
+----+------------------------+----------------------+
| id | reservation_time_start | reservation_time_end |
+----+------------------------+----------------------+
| 1 | 10:00:00 | 13:00:00 | <- i need to get this
| 2 | 12:00:00 | 14:00:00 |
| 3 | 14:00:00 | 15:00:00 |
+----+------------------------+----------------------+
用户输入示例:
$reservation_time_start = 12:00:00 (-1:30 Hour)
$reservation_time_end = 14:00:00 (+ 1:30 hour)
当我执行我的代码时,它返回 null。请帮忙。
【问题讨论】:
-
即转换,我的问题是如何在两个不同字段的两个时间范围内从用户输入的数据库中获取数据。
-
你能检查一下数据库中这些列的数据类型,应该是时候了。 AND ->whereBetween('reservation_time_start', [$time_from, $time_to]) ->whereBetween('reservation_time_end', [$time_from, $time_to]) 将被解释为 AND 你需要的是 orWhereBetween
-
是的,它是“时间”数据类型。
-
试试这个 ->where(function($query) use ($data){ $query->whereBetween('date',array($data['datefrom'],$data['dateto '])) ->orwhereBetween('time',array($data['datefrom'],$data['dateto'])); })
-
您应该同时使用日期和时间,因为今天和明天的时间可能会有问题
标签: php mysql laravel eloquent laravel-5.1