Php 使用Laravel将数据作为json字符串存储在nosql中
对于给定的模型,我有一个Php 使用Laravel将数据作为json字符串存储在nosql中,php,laravel,laravel-5,neo4j,nosql,Php,Laravel,Laravel 5,Neo4j,Nosql,对于给定的模型,我有一个Post Modela$filleble属性,其中我定义了一个列表a属性,如下所示: protected $fillable = [ 'title', 'slug', 'body', 'type', 'status', 'inputs', ]; 在用户界面中,由于某些原因,会有一些自定义字段,我希望将其存储为“inputs”属性中的string。这是我的控制器: pu
Post Model
a$filleble
属性,其中我定义了一个列表a属性,如下所示:
protected $fillable = [
'title',
'slug',
'body',
'type',
'status',
'inputs',
];
在用户界面中,由于某些原因,会有一些自定义字段,我希望将其存储为“inputs”属性中的string
。这是我的控制器:
public function store(StorePost $request){
$data=$request->validate();
$p=Post::create($data);
return response()->json(PostResource::collection($p));
}
但问题是,对于属性input
,希望它的值是json字符串
,因为有一些自定义字段和数据也将来自表单
,它们的所有名称都将以input
作为前缀,例如:input\u body,input\u slug,输入\u title
。但是我在模型中没有定义,所以我想做的是在控制器中按照以下结构从它们创建一个paire键值:
[
custom_field_name1=>value1,
custom_field_name2=>value2
]
但是这些名称将取决于创建它们的用户,我不知道如何让控制器自动识别它们以创建上面的数组。然后将它们转换为
json字符串
以将它们存储在input
属性中。在Mysql中这样做
add this line in `Post` Model
protected $casts = [
'inputs' => 'array'
];
首先,在迁移中使用->json()
方法将输入字段字符串更新为json字段
$table->json('inputs');
添加迁移后的加载项Post
Model
protected $casts = [
'inputs' => 'array'
];
u向数组中强制转换列输入后,会自动将数据存储在json中
数组与检索
更多细节
在nosql中这样做
add this line in `Post` Model
protected $casts = [
'inputs' => 'array'
];
仅将字段强制转换为数组
我不能在迁移中这样做,因为我使用的是nosql数据库,neo4j@ChristianLisangola您只需要在post模型中强制转换输入数组,但是,当来自表单名称的属性未在
模型的$filleble attribute
中定义时,如何识别它们并将它们放入输入数组中?