当前位置:  开发笔记 > 编程语言 > 正文

在laravel中保存JSON字符串

如何解决《在laravel中保存JSON字符串》经验,为你挑选了1个好方法。

我试图将JSON字符串保存到数据库.

这是我得到的错误:

exception 'ErrorException' with message 'preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

这就是我的JSON的样子:

"metadata": {
      "is_ivr": 0,
      "is_upgradable": 1,
      "is_sms": 0,
      "is_design": 0,
      "threshold_amount": 0,
      "post_threshold": 0,
      "pre_threshold": 0
    }

我想将元数据的值保存为字符串.

我试过这样做:

$data = $request->input('data');
$data['metadata'] = json_encode($data['metadata']);

的结果 dd($data);

array:8 [
  "product_name" => "Pulse"
  "parent_product" => 0
  "product_description" => "goes here"
  "metadata" => array:7 [
    "is_ivr" => 0
    "is_upgradable" => 1
    "is_sms" => 0
    "is_design" => 0
    "threshold_amount" => 0
    "post_threshold" => 0
    "pre_threshold" => 0
  ]
  "price_period" => 1
  "price_variation" => 2
  "outlet_pricing" => 0
  "status" => 1
  ]
]

Marcin Nabia.. 6

说实话,我不知道目前发生了什么,但打开你的模型(我不知道它的名字,因为你没有展示它)并填写:

protected $casts = [
    'metadata' => 'array',
];

假设你还没有完成它.

现在,当您将数据插入数据库时​​不要使用任何json_encode,只需使用:

$data = $request->input('data');

无:

$data['metadata'] = json_encode($data['metadata']);

使用casts属性Laravel会在插入数据库时​​自动将数组数据转换为json,并json_decode在从数据库获取数据时自动运行以获取数组.



1> Marcin Nabia..:

说实话,我不知道目前发生了什么,但打开你的模型(我不知道它的名字,因为你没有展示它)并填写:

protected $casts = [
    'metadata' => 'array',
];

假设你还没有完成它.

现在,当您将数据插入数据库时​​不要使用任何json_encode,只需使用:

$data = $request->input('data');

无:

$data['metadata'] = json_encode($data['metadata']);

使用casts属性Laravel会在插入数据库时​​自动将数组数据转换为json,并json_decode在从数据库获取数据时自动运行以获取数组.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有