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

Laravel模型isExpired方法返回值类型不匹配报错如何解决?

问题修复方案

报错根因

你遇到的类型报错是因为PHP的原生返回类型声明规则写错了:PHP 中布尔值的原生类型声明为小写的bool,你写的boolean会被框架识别为当前命名空间下的类(刚好项目中引入了phpDocumentor的Boolean类型类,所以系统要求你返回该类的实例,而你返回了PHP原生布尔值,就触发了类型不匹配报错)。
另外代码还存在一处隐性拼写错误,会导致后续日期判断逻辑异常,需要同步修复。

具体修改点

  1. 修正isExpired方法的返回类型声明,把: boolean改为: bool
  2. 修正$casts属性中的日期类型拼写,把datatime改为正确的datetime(原拼写多了一个字母a)

修复后完整的Panelfile模型代码

class Panelfile extends Model
{
    protected $guarded = [];

    public function getLinkAttribute()
    {
        return $this->isExpired() ? null : $this->file;
    }

    public function isExpired() : bool
    {
        return Carbon::now()->gte($this->expiration);
    }

    protected $appends = ["link"];

    protected $casts = [
        'expiration' => 'datetime:Y-m-d H:i:s',
    ];
}

修改后重新运行即可正常实现过期展示逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:00:05