如何从 laravel 8 中的表单插入多行

How to insert multiple row from form in laravel 8

我有一个 table 的形式类似于:

products comments
product 1 comment 1
product 2 comment 2

我想,当用户点击保存按钮时,每一行都按原样添加到数据库中(成对 [产品 i,评论 i])

我试过了

foreach ($request->products as $key=>$product) {
            $saveData = [
                'product' => $request->product[$key],
                'comment' => $request->comment[$key],
            ];
            DB::table('prod_com')->insert($saveData);
        }

在控制器中并且

<form id="regForm" method="post" >
 @csrf
<table>
  <tr>
    <th>Product</th>
    <th>Comment</th>
  </tr>
  @foreach($prdcts as $products)
  <tr>
    <td>{{$products['product']}}</td>
    <td>
      <input type="text" class="form-control" name="comment[]" >
    </td>
  </tr>
</table>

在表格中,但数据未添加到数据库中,或者我收到 405 错误方法不允许..

非常感谢任何帮助!

编辑: 完整 html 表格

<form id="regForm" action="{{route('saved')}}" method="post" >
       @csrf    
       <table class="table table-responsive table-condebsed table-hover">
           <thead>
             <tr>
              <th scop="col"> Product </th>
              <th class="col-md-6" scop="col"> Comment </th>
             </tr>
            </thead>
            <tbody>
              @foreach($prdcts as $products)
              <tr>
               <td>{{ $products['product'] }}</td>
               <td>
                 <input type="text" class="form-control" name="comment[]" >
               </td>
              </tr>
             @endforeach
            </tbody>
           </table>
           <br>
           <button type="submit" class="btn btn-sm btn-success">save</button>
</form>

&路线:

Route::post('/saved', [App\Http\Controllers\ProdComController::class, 'submitData'])->name('saved');

您可以在将数据保存到数据库时使用 for 循环

for ($i = 0; $i < count($request->comment); $i++) {
       $comment = Commet::create([
            
            'comment' => $request->comment[$i],
        ]);
    }

更改 html 代码如下

 @foreach($prdcts as $key=>$products)
                    <tr>
                        <td>{{$products['product']}}</td>
                        <td>
                            <input type="hidden" class="form-control" name="product[{{ $key}}][product]" value="{{$products['id']}}">
                            <input type="text" class="form-control" name="product[{{ $key}}][comment]" >
                        </td>
                    </tr>
                @endforeach

然后在控制器中

 DB::table('prod_com')->insert($request->product);

如果出现任何错误,请尝试像下面这样打印 $request

dd($request->all());

因此您可以在 request.If 问题中检查数据格式,然后在评论中告诉我