Laravel 工厂填充数据 数据库如何保存非转义的 JSON 格式?
一个商品参数表ProductParam
,字段为param
因为可能有多个参数也可能只有一个参数,我在模型中定义了protected $casts = ['param' => 'array'];
此时通过控制器新建,数据库存储的字段如下: ["\u989c\u8272:\u767d\u8272|\u7ea2\u8272|\u7eff\u8272","\u5305\u88c5:\u5927|\u4e2d|\u5c0f","color:red|green"]
我认为此种格式是直接获取数组然后使用json_edcode()
我将数据打印出来做过对比发现是一样的.
$params = [
'颜色:白色|黑色|绿色|红色',
'包装:大|中|小',
'口味:微辣|甜味|原味',
];
ProductParam::create([\
'product_id'=>1,
'param'=>json_encode($params)\
]);
echo json_encode($params);
return;
打印结果
["\u989c\u8272:\u767d\u8272|\u9ed1\u8272|\u7eff\u8272|\u7ea2\u8272","\u5305\u88c5:\u5927|\u4e2d|\u5c0f","\u53e3\u5473:\u5fae\u8fa3|\u751c\u5473|\u539f\u5473"]
然而我存进数据库的内容是
[\"\\u989c\\u8272:\\u767d\\u8272|\\u9ed1\\u8272|\\u7eff\\u8272|\\u7ea2\\u8272\",\"\\u5305\\u88c5:\\u5927|\\u4e2d|\\u5c0f\",\"\\u53e3\\u5473:\\u5fae\\u8fa3|\\u751c\\u5473|\\u539f\\u5473\"]"
请教一下我如何在存mysql 的时候直接存储我打印结果的内容进去,因为模型中使用了
$casts
我用工厂填充的数据都使用不了.
mysql版本 5.7.27
感谢大家回答,我目前的问题是打印结果存到数据库里面之后多了"\
可以看的打印结果的\
,保存到数据库里面成为了\\
,我想取消这种转义.
@kangfq
protected $casts = ['param' => 'array'];
你设置了casts,在保存到数据库之前本来就会帮你json_encode,可你在ProductParam::create([\ 'product_id'=>1, 'param'=>json_encode($params)\ ]);
中手动json_encode了,那保存到数据库时又会json_encode一次,所以会出现\\