为了账号安全,请及时绑定邮箱和手机立即绑定

laravel whereBetween 不检查最后一个值

laravel whereBetween 不检查最后一个值

PHP
郎朗坤 2023-06-18 16:08:43
我发现 laravelwhereBetween()没有检查我给出的最后一个值(日期),或者我的代码可能是错误的。你能检查我的代码或我的假设是正确的吗?另一个解决方案可能是存储在created_at我的代码如下$new_from = date('Y-m-d', strtotime($request->from)); // 2020-06-15$new_to = date('Y-m-d', strtotime($request->to)); // 2020-06-17$vehicle = Vehicle::findOrFail($request->vehicle);//if I remove below $check_from and $check_to and check request()->from and to, still gives same data$check_from = Carbon::parse($new_from)->startOfDay()->toDateTimeString();$check_to = Carbon::parse($new_to)->startOfDay()->toDateTimeString();$vehicleDetails = VehicleDetail::where('imei', $vehicle->imei)->whereBetween('created_at', [$check_from, $check_to])->get();解释:我有 2020 年 6 月 15 日和 17 日创建的数据。但是当我尝试从上面的代码中获取数据时,它只返回 2020-06-15 的数据,而不返回 17 的数据。当我更改request()->to = 2020-06-18时,它会提供 15 和 17 的数据
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

由于您将两者的时间戳设置为 startOfDay,因此您要查找 2020-06-15 00:00:00 和 2020-06-17 00:00:00 之间的记录。这意味着它将找不到 17 号的任何记录,因为所有记录都在午夜之后。相反,将结束日期更改为当天结束。

$check_to = Carbon::parse($new_to)->endOfDay()->toDateTimeString();

现在,这将获取 2020-06-15 00:00:00 和 2020-06-17 23:59:59 之间的记录。


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信