如何将动态字段保存到数据库中,问题是我不知道我们模块中的字段名称,用户将动态添加具有名称的字段,并且当用户检查表单时,我会将这些字段名称保存在数据库中他在帖子表单中添加了字段,因此我想将该字段数据保存到数据库中。这是我的代码
<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
,并且在保存到数据库时它会自动将其转换为JSON。它还允许您使用 $model->extra_parameters['param_name']
访问字段。
//in your model file
protected $casts = [
'extra_parameters' => 'array'
];
请参阅此处的数组转换部分以了解更多信息:https://laravel.com/docs/master/eloquent-mutators#attribute-casting
关于php - 如何在 Laravel 5 中将动态字段数据保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710404/