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

Blade调用diffInDaysFromToday()报未定义函数错误如何排查

问题根本原因

这个报错和日期格式没有任何关系,触发报错的核心原因是:PHP和Laravel框架没有提供全局可直接调用的diffInDaysFromToday()函数,你在模板里直接裸调用一个未被定义的函数,就会抛出「Call to undefined function」错误。
实际上你想调用的日期差计算方法,是Laravel内置的Carbon日期操作类的实例方法,不属于全局可调用的函数,必须在Carbon实例上调用,不能直接写函数名调用。

修复方式
  • 先将$course['createdAt']字段值解析为Carbon实例,再调用实例上的日期差方法即可,修正后的Blade代码如下:
@if($course['createdAt'] != null)
  @if( \Carbon\Carbon::parse($course['createdAt'])->diffInDays(now()) < 30 )
     <span>{{__('new')}}</span>
  @endif
@endif
  • 如果$course是Eloquent模型查询出的结果,建议提前在对应模型的$casts配置中,将createdAt字段声明为日期类型,字段值会自动转为Carbon实例,后续模板里可以直接写$course->createdAt->diffInDays(now())调用,无需每次手动解析。
  • 如果你确实需要全局使用diffInDaysFromToday()函数,需要自行在项目的自定义辅助函数文件中定义该函数,未定义的情况下直接调用必然触发报错。

补充说明:如果是日期格式不合法导致的异常,报错信息会指向Carbon日期解析失败,和「调用未定义函数」的报错类型完全不同,可以直接排除日期格式诱因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:21:41