如何在laravel5中将动态字段数据保存到数据库

时间:2016-01-10 20:26:33

标签: php mysql laravel-5

如何将动态字段保存到数据库问题是我不知道我们有模块的字段名称,用户将动态添加字段名称,当用户检查表单时,我会将这些字段名称保存在数据库中例如,他在帖子表单中添加了字段,因此我想将这些字段数据保存到数据库中。这是我的代码

<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>

1 个答案:

答案 0 :(得分:0)

如果无法在数据库中定义列的名称,则必须将数据另存为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