我尝试用 eloquent 将数据保存在 json 中,但遇到了这个问题,我不知道为什么会收到此错误。
======================我的控制器======================
public function facture_save(Request $request)
{
$input = [
'facture_json' => [
'1' => 'One',
'2' => 'Two',
'3' => 'Three'
]
];
$item = Facture::create($input);
dd($item->data);
}
======================我的桌子======================
facture(id,facture_json) 其中facture_json是长文本数据格式。
======================我的模型======================
protected $fillable = [
'facture_json'
];
/**
* Get the user's first name.
*
* @return \Illuminate\Database\Eloquent\Casts\Attribute
*/
protected function data(): Attribute
{
return Attribute::make(
get: fn ($value) => json_decode($value, true),
set: fn ($value) => json_encode($value),
);
}
属性函数的名称必须与您要使用的字段的名称相对应;就你而言,
facture_json
。
protected function facture_json(): Attribute
然而,这一切完全没有必要。删除属性函数,并通过强制转换告诉 Eloquent 该列存储 JSON 数据:
protected $casts = [
'facture_json' => 'array',
];
它将为您处理 json_encode
/
json_decode
。