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

Laravel使用Eloquent存储JSON时报错:parameterize()参数类型不符

问题原因

你定义的data()访问器/修改器没有关联到数据库的facture_json字段,导致Eloquent保存数据时直接传入数组,而非先转为JSON字符串,触发了参数类型错误。

解决方法

方法一:修正Attribute方法名(匹配字段)

Laravel的Attribute方法名需要与数据库字段对应(驼峰命名对应下划线字段),修改模型代码如下:

protected $fillable = [
    'facture_json' 
]; 

protected function factureJson(): Attribute
{
    return Attribute::make(
        get: fn ($value) => json_decode($value, true),
        set: fn ($value) => json_encode($value),
    );
}

之后控制器中获取数据时,需要对应改为dd($item->facture_json);。

方法二:使用内置字段类型转换(更简洁)

直接在模型中添加$casts属性,让Laravel自动处理JSON与数组的转换,无需手动编写访问器/修改器:

protected $fillable = [
    'facture_json' 
]; 

protected $casts = [
    'facture_json' => 'array', // 也可写为'json'
];

此时控制器中保存和读取数据的逻辑无需修改,直接访问$item->facture_json即可得到数组格式的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:22:13