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

Laravel中使用Carbon处理日期报错:Unexpected data found. Trailing data

解决Laravel中Carbon的"Unexpected data found. Trailing data"错误

问题根源

你的代码存在几个关键错误:

  • Licence::where(...)->get() 返回的是Eloquent集合,不是单个日期值,直接传给Carbon::createFromFormat会因为类型不匹配触发错误
  • pluck('time') 返回的也是集合,addDays() 方法需要传入整数类型的天数,不能传集合
  • 错误指定了日期格式:created_at是datetime类型(格式为Y-m-d H:i:s),但你用了Y-m-d去解析,格式不匹配也会导致报错

修复后的代码

$packages = Package::find($id);

// 获取单个许可证的created_at(如果只需要一条数据,用first()而非get())
$licence = Licence::where('tbl_package_id', $id)
    ->select('created_at')
    ->first();

// 直接使用Eloquent模型自带的Carbon实例,无需手动创建
$date = $licence->created_at;

// 获取单个time值,用value()而非pluck(),返回整数
$addDays = Package::where('id', $request->input('tbl_package_id'))
    ->value('time');

// 添加天数
$updatedDate = $date->addDays($addDays);

额外说明

  • Eloquent的datetime字段默认会自动转换为Carbon实例,所以不需要再用Carbon::createFromFormat手动解析
  • 如果需要处理多条许可证数据,要遍历集合逐个处理:
$licences = Licence::where('tbl_package_id', $id)
    ->select('created_at')
    ->get();

$addDays = Package::where('id', $request->input('tbl_package_id'))
    ->value('time');

foreach ($licences as $licence) {
    $updatedDate = $licence->created_at->addDays($addDays);
    // 这里可以添加保存或其他业务逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:49:53