【问题标题】:How to save multiple form at single submit in PHP laravel?如何在 PHP laravel 中一次提交时保存多个表单?
【发布时间】:2018-03-09 07:59:08
【问题描述】:

我有一个表单,可以根据其中的条目数多次保存到数据库中。准确地说,我有 4 个输入字段,在填写完所有字段后,我单击 Add 按钮。单击“添加”按钮后,我将在 <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-&gt;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 行查询/Grammars/Grammar.php 并定义

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

【问题讨论】:

    标签: php mysql forms laravel


    【解决方案1】:

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

    <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-&gt;myform) 并检查您是否正确获取值

    如果你想存储多维数组,那么你不能使用插入而不是创建

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

    【讨论】:

    • 我认为您可以将每个输入名称的最后一对括号中的数字去掉,它们会自动添加。
    【解决方案2】:

    使用这个

    $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],
        ));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2021-12-06
      • 2023-03-22
      相关资源
      最近更新 更多