Laravel 工厂填充数据 数据库如何保存非转义的 JSON 格式?

weixin_38058939 2019-09-18 04:14:52
一个商品参数表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 laravel
...全文
120 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38066085 2019-09-18
  • 打赏
  • 举报
回复
json_encode($params, JSON_UNESCAPED_UNICODE)
weixin_38069045 2019-09-18
  • 打赏
  • 举报
回复
protected $casts = [ 'data' => 'json' ]; 如果是通过这种的话,重写一下Model中的asJson函数。 protected function asJson($value) { return json_encode($value,JSON_UNESCAPED_UNICODE); } 这样保存就是中文的了。
weixin_38112450 2019-09-18
  • 打赏
  • 举报
回复
感谢大家回答,我目前的问题是打印结果存到数据库里面之后多了"\可以看的打印结果的 \, 保存到数据库里面成为了\\, 我想取消这种转义.
weixin_38116036 2019-09-18
  • 打赏
  • 举报
回复
json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

479

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧