如何在PHP laravel的单个提交中保存多个表单?

时间:2017-09-27 18:07:32

标签: php mysql forms laravel

我有一个表单可以多次保存到数据库,具体取决于其中的条目数。确切地说,我有4个输入字段,填写完所有字段后,我点击添加按钮。单击“添加”按钮后,我在<form>标记内的表格行中创建条目,例如

<form>
 <table>
  <tr>
   <td> <input type="hidden" name="a[]" value="xyz" /> xyz</td>
   <td> <input type="hidden" name="b[]" value="123" /> 123</td>
   <td> <input type="hidden" name="c[]" value="456" /> 456</td>
   <td> <input type="hidden" name="d[]" value="abc" /> abc</td>
  </tr>
  <tr>
   <td> <input type="hidden" name="a[]" value="xyz" /> xyz</td>
   <td> <input type="hidden" name="b[]" value="123" /> 123</td>
   <td> <input type="hidden" name="c[]" value="456" /> 456</td>
   <td> <input type="hidden" name="d[]" value="abc" /> abc</td>
  </tr>
 </table>
</form>

现在我想将表的每一行保存为一行数据库。我无法理解如何做到这一点。我使用dd($a = $request->input('a'));为单个字段获取控制器中的数据,

array:2 [▼
  0 => "xyz"
  1 => "xyz"
]

我使用它来使用Laravel将其保存到数据库中,

$save=Model::Create(array(
        'a'=>$request->input('a'),
        'b'=>$request->input('b'),
        'c'=>$request->input('c'),
        'd'=>$request->input('d')
));

我收到错误,

  

传递给Illuminate \ Database \ Grammar :: parameterize()的参数1必须是类型数组,字符串给定,在/ var / www / html / quoting / vendor / laravel / framework / src / Illuminate / Database /中调用第681行的Query / Grammars / Grammar.php已定义

如何使用Laravel命令将其保存到数据库中。?

2 个答案:

答案 0 :(得分:1)

使用此

$input = $request->all();

foreach($request->a as $key => $value) {
    Model::Create(array(
        'a' => $value,
        'b' => $input['b'][$key],
        'c' => $input['c'][$key],
        'd' => $input['d'][$key],
    ));
}

答案 1 :(得分:0)

您需要更改所有输入的名称

<form>
 <table>
  <tr>
   <td> <input type="hidden" name="myform[a][0]" value="xyz" /> xyz</td>
   <td> <input type="hidden" name="myform[b][0]" value="123" /> 123</td>
   <td> <input type="hidden" name="myform[c][0]" value="456" /> 456</td>
   <td> <input type="hidden" name="myform[d][0]" value="abc" /> abc</td>
  </tr>
  <tr>
   <td> <input type="hidden" name="myform[a][1]" value="xyz" /> xyz</td>
   <td> <input type="hidden" name="myform[b][1]" value="123" /> 123</td>
   <td> <input type="hidden" name="myform[c][1]" value="456" /> 456</td>
   <td> <input type="hidden" name="myform[d][1]" value="abc" /> abc</td>
  </tr>
 </table>
</form>

然后在您的控制器中首先dd($request->myform)并检查您是否正确获取值

如果你想存储多维数组,那么你就不能使用insert not create

$save=Model::insert(multdimensionl array here);