如何将动态字段保存到数据库问题是我不知道我们有模块的字段的名称,用户会动态添加带有名称的字段,当用户检查表单时,我会将字段名称保存到数据库中,例如,他在posts表单中添加了字段,所以我想将字段数据保存到数据库。这是我的代码
<form>
<input type="text" name="firstname" id="firstname">
<?php foreach($extrafields as $extrafields1 )
{
?>
<input type="<?php $extrafields1->type; ?>" name="<?php $extrafields1->name; ?>" id="<?php $extrafields1->id; ?>" <?php $extrafields1->extraparameters; ?>>
<?php
}
</form>
如果不能定义数据库中列的名称,则必须将数据保存为JSON。因此,您可以在模型上创建一个名为extra_parameters
的列,它将是一个文本列。当你发布表单数据时,你需要更新模型,如下所示:
//remove the expected parameters so you only have the extra ones
$extraparams = $request->except(['firstname','...']);
$model->extra_parameters = $extraparams;
您还应该将列强制转换为模型中的数组。这允许您使用数组设置$model->extra_parameters
,并且它将在保存到DB时自动将其转换为JSON。它还允许您使用$model->extra_parameters['param_name']
来访问字段。
//in your model file
protected $casts = [
'extra_parameters' => 'array'
];
有关更多信息,请参阅此处的阵列铸造部分:https://laravel.com/docs/master/eloquent-mutators#attribute-铸造