我正在使用laravel,我想在数据库中播种json。所以我正在做的是json_encode($ array)。但这会将"\"
放在每个"
(双引号)上,这是我不想要的,如何从数组生成json而又不在每个双引号的fron中添加斜线?
这是数组:
$fields = [
[
'name' => 'image',
'type' => 'file',
'view' => 'image',
'validations' => 'required|image',
'label' => 'image'
]
];
当我使用json_encode($fields)
时,它将像下面这样存储在数据库中:
"[{\"name\":\"image\",\"type\":\"file\",\"view\":\"image\",\"validations\":\"required|image\",\"label\":\"image\"}]"
我不希望这些斜杠,因为我不得不两次使用json_decode()
。此外,Laravel中的$casts
属性仅将它们解码一次。
FIX 这是我尝试过的并且有效的
我的模型中有这个
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'fields' => 'array',
'translatable_fields' => 'array'
];
因此它应该自动解码。 这就是我从播种机将其保存到数据库中的方式:
$moduleTemplate = new ModuleTemplate;
$moduleTemplate->translateOrNew('en')->name = 'Image with text';
$moduleTemplate->translateOrNew('bg')->name = 'Снимка с тескт';
$moduleTemplate->view = 'section-1';
$fields = collect([
[
'name' => 'image',
'type' => 'file',
'view' => 'image',
'validations' => 'required|image',
'label' => 'image'
]
]);
$moduleTemplate->fields = $fields->toJson();
$translatableFields = collect([
[
'name' => 'title',
'type' => 'text',
'view' => 'input',
'validations' => 'required|string|max:190',
'label' => 'title'
],
[
'name' => 'text',
'type' => 'wysiwyg',
'view' => 'wysiwyg',
'validations' => 'required|string',
'label' => 'text'
]
]);
$moduleTemplate->translatable_fields = $translatableFields->toJson();
$moduleTemplate->save();
它每次都在放斜线
我要做的只是简单地从阵列中删除->toJson()
答案 0 :(得分:1)
只需从
更改报价格式json_encode('"glossary": {"title": "example glossary"}');
到
json_encode("'glossary': {'title': 'example glossary'}");
根据您的评论进行编辑
使用
$fields = [ [ "name" => "image", 'type' => 'file', 'view' => 'image', 'validations' => 'required|image', 'label' => 'image' ] ];
当我这样做
json_encode($fields)
它返回我
[{"name":"image","type":"file","view":"image","validations":"required|image","label":"image"}]
使用Laravel 4.2,未经Laravel> 5进行测试
您的JSON数据可能有问题