输入在循环laraval 8中时如何将多个输入保存到数据库

时间:2021-08-01 16:11:11

标签: laravel

我正在从事 Laravel 8 项目。我有一排有 3 个输入和一个按钮,可以添加更多行。我添加多少行都没有关系,只有第一行提交到数据库中。请帮我解决这个问题。谢谢!

index.blade.php:

      <h4>Add Products</h4>
      <form action="{{ url('insert-products') }}" method="POST" enctype="multipart/form-data">
         @csrf
         <select class="form-select" name="cateId">
            <option value="">Select a Category</option>
            @foreach ($category as $item)
                <option value="{{ $item->id }}">{{ $item->name }}</option>
            @endforeach
        </select>
        <br>

            <label for="">Product Name</label><br>
            <input type="text" name="productName" id="quantity2" required><br>
            <br>
            <input type="checkbox" name="status" required>
            <br>
            <div class="customer_records">
            
              <input type="text" name="productName" id="quantity_img2" required>
              <input type="text" name="productVariant" required>
              <input type="text" name="productValue" required>

              <a class="extra-fields-customer" href="#">Add More Customer</a>
            </div>

           <div class="customer_records_dynamic"></div>
            <button type="submit" class="btn btn-outline-success waves-effect" id="type-success">Add Product</button> 

         </form>

控制器:

public function insert(Request $request){
        
        $products = new Products();
        $products->cateId = $request->input('cateId');
        $products->productName = $request->input('productName');
        $products->status = $request->input('status') == TRUE ? '1':'0';
        $products->productVariant = $request->input('productVariant');
        $products->productValue = $request->input('productValue');
        
        if($products->save()){
            return redirect('/categories')->with('status',"Products Added Succesfully");
        }
        else{
            return redirect('/categories')->with('status',"Something went wrong");
        }
        
        
    }

1 个答案:

答案 0 :(得分:1)

您涉及多个传输:

请求

首先,您需要确保完全发送值。看到您的代码,我假设在请求级别发送了一个值。您将需要指出将涉及多个值,例如

        <label for="">Product Name</label><br>
        <input type="text" name="productName[]" id="quantity2" required><br>
        <br>
        <input type="checkbox" name="status[]" required>
        <br>
        <div class="customer_records">
        
          <input type="text" name="productName[]" id="quantity_img2" required>
          <input type="text" name="productVariant[]" required>
          <input type="text" name="productValue[]" required>

          <a class="extra-fields-customer" href="#">Add More Customer</a>
        </div>

注意 [] 表示多重性。

旁注:我强烈建议您不要将 ID 硬编码到重复的模板中,因为它们最终会被复制,从而使您的 HTML 无效。

应用程序

虽然上一部分应该解决一个问题,但不能保证这是唯一的问题。调试并查看请求发送的应用程序端的内容是有意义的。如果你拥有所有的价值观,那么一切都很好。如果没有,请调查原因并修复它。

数据库

您需要确保您的代码尝试存储所有内容。如果是这样,那么进一步的问题是它是否成功完成。如果没有,那么您需要调试代码以查看问题所在。