使用Laravel在nosql中将数据存储为json字符串

时间:2019-05-25 07:23:05

标签: php laravel laravel-5 neo4j nosql

对于给定的模型,我有一个Post model和一个$fillable属性,其中我定义了一个如下所示的服装列表:

protected $fillable = [
        'title',
        'slug',
        'body',
        'type',
        'status',
        'inputs',
    ];

出于某种原因,在用户界面中会有一些自定义字段,我想以string的形式存储在“输入”属性中。这是我的控制器:

public function store(StorePost $request){
    $data=$request->validate();
    $p=Post::create($data);
    return response()->json(PostResource::collection($p)); 
}

但是事实是,对于属性input,它希望它的值为json string,因为存在一些自定义字段,并且数据也将来自form,而所有它们的名称将以input_为前缀,例如:input_body,input_slug,input_title。但是我没有在模型中定义,所以我想做的是在其中创建一个成对密钥值控制器具有以下结构:

[
    custom_field_name1=>value1,
    custom_field_name2=>value2
]

但是那里的名称将取决于创建它们的用户,我不知道如何拥有一个控制器,如何自动识别它们以创建上面的数组。然后将它们转换为json string进行存储它们放在input属性中。

1 个答案:

答案 0 :(得分:1)

在Mysql中这样做

首先使用->json()方法在迁移过程中将输入字段字符串更新为json字段

 $table->json('inputs');

添加迁移后,添加到Post模型中

 protected $casts = [
    'inputs' => 'array'
 ];
  

在将列输入转换为数组后自动将数据存储在json中   排列并检索

了解更多信息see

在nosql中这样做

 add this line in `Post` Model

 protected $casts = [
    'inputs' => 'array'
 ];
  

仅将字段投射到数组see