Laravel - 如何获得两条记录之间最近的时间

Laravel - How to get nearest time between two records

我有一个叫 room_monitors 的 table。在 table 中,我想找到最接近的操作。假设我们在同一个房间里进行了 2 次手术。其中一个位于 12:00pm,另一个位于 15:00pm。当我在 14:55 或 12:01 发送请求时,我想获得 12:00pm 操作。到目前为止,我认为也许我可以做个把戏,但如您所见,这没有意义。

 RoomMonitor::where('room',$roomId)
            ->whereBetween('operation_time',[now()->subMinutes(179)->format("H:i:s"),date('H:i:s', strtotime("+179 minutes"))])
            ->orderBy('operation_time','desc')->firstOrFail();

有人可以帮我吗?

您正试图找到第一个可能的操作时间比现在短,所以

RoomMonitor::where('room',$roomId)
            ->where('operation_time', '<=', now()->format("H:i:s"))
            ->orderBy('operation_time','desc')
            ->firstOrFail();

where 子句应该查询时间比现在短(或等于)的结果 然后你在那个时候订购它们下降,第一个应该是最近的操作