无法弄清为什么忽略JSON字段。
这不起作用:
Registries::create([
'nr' => $old_document->no,
'metas->name' => 'r01',
]);
在模型中我已设置:
protected $casts = [
'metas' => 'array',
];
并且:
protected $fillable = [
'nr',
'metas'
];
我认为问题出在属性转换上,因为这一点正在起作用:
Registries::create([
'nr' => $old_document->no,
'metas' => json_encode(['name'=>'r01']),
]);
我没有收到任何错误,只是JSON列为空。
答案 0 :(得分:0)
因此,$metas->name
仅适用于更新,在我的情况下,我需要这样插入:
Registries::create([
'nr' => $old_document->no,
'metas' => ['name'=>'r01']
]);
答案 1 :(得分:0)
我不喜欢关系dabatase中的属性转换。
所以这只是我基于array
文档的猜测。
在处理以序列化JSON存储的列时,数组强制转换类型特别有用。
您正在尝试放置关联数组,对于JSON,该数组是一个对象。
我可能认为这是一个错误。
所以尝试在插入时进行类型转换:
Registries::create([
'nr' => $old_document->no,
'metas' => (object)['name'=>'r01'],
]);
属性投射
并使其成为对象:
protected $casts = [
'metas' => 'object',
];