我试图将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
在从数据库获取数据时自动运行以获取数组.
说实话,我不知道目前发生了什么,但打开你的模型(我不知道它的名字,因为你没有展示它)并填写:
protected $casts = [ 'metadata' => 'array', ];
假设你还没有完成它.
现在,当您将数据插入数据库时不要使用任何json_encode
,只需使用:
$data = $request->input('data');
无:
$data['metadata'] = json_encode($data['metadata']);
使用casts
属性Laravel会在插入数据库时自动将数组数据转换为json,并json_decode
在从数据库获取数据时自动运行以获取数组.