You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Eloquent按日期范围查询数据报错求助

解决Laravel日期范围查询的类型错误问题

看起来你在尝试查询当日及之后6天的会议室预订数据,但代码里有几个关键问题触发了类型错误,我来帮你一步步修正:

错误原因分析

  1. 字符串日期不能直接做算术运算:date("Y M d")返回的是类似2024 Oct 05的字符串,你直接给它加$i,PHP无法处理字符串与整数的加法操作,这会触发类型不兼容的错误。
  2. whereBetween参数格式错误:这个方法需要传入包含两个日期值的数组(起始日期和结束日期),但你写的[$hari, $hari + 6]里,$hari是数组,$hari + 6试图把数组和整数相加,这显然不被PHP支持,所以报出了Unsupported operand types的错误。

修正后的代码(推荐用Carbon,Laravel自带)

Laravel默认集成了Carbon日期处理库,用它处理日期运算非常便捷,修正后的控制器代码如下:

// 获取当日日期作为查询起始点
$startDate = \Carbon\Carbon::today();
// 计算结束日期:当日加6天
$endDate = \Carbon\Carbon::today()->addDays(6);

// 查询tanggal字段在起始和结束日期之间的所有数据
$booking_room = jadwal_meeting::whereBetween('tanggal', [$startDate, $endDate])->get();

// 将数据传递到视图(注意with方法的正确用法:第一个参数是视图中要用的变量名,第二个是对应数据)
return view('homepage')->with('booking_room', $booking_room);

原生PHP写法(如果不想用Carbon)

如果你习惯用原生PHP函数,也可以这样写,注意要使用数据库能识别的Y-m-d标准日期格式:

// 起始日期:当日,格式匹配数据库日期字段
$startDate = date("Y-m-d");
// 结束日期:当日加6天
$endDate = date("Y-m-d", strtotime("+6 days"));

$booking_room = jadwal_meeting::whereBetween('tanggal', [$startDate, $endDate])->get();

return view('homepage')->with('booking_room', $booking_room);

额外注意点

  • 确保你的tanggal字段在数据库中是date或datetime类型,这样日期范围查询才能正常生效。
  • 之前用date("Y M d")生成的日期格式(如2024 Oct 05)通常不被数据库的日期字段识别,所以一定要用Y-m-d这种标准格式。

内容的提问来源于stack exchange,提问作者Bariq Dharmawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:11:14