【问题标题】:Laravel Update multiple records with two input dataLaravel 使用两个输入数据更新多条记录
【发布时间】:2018-07-17 22:43:54
【问题描述】:

我正在构建一个电子商务应用程序,我想用我的 HTML 或刀片模板中的几个输入字段来更新我的数据库中的两条记录。 我有一个产品的尺寸作为产品的选项。所以衬衫可以有小作为选项 1,中作为选项 2,大作为选项 3。然后我创建了一个 productProductOptions 表,其中包含 product_id 列和 product_option_id 列。

如果管理员想要更新产品,我会遍历productProductOptions 表并将产品的选项显示到产品/编辑页面。因此,一旦更改了必要的选项,我就可以再次将它们抓回productProductOptions

数据库:

   product_id | product_option_id
        1     |         2
        1     |         3

这是我的 HTML:

@foreach($productOptions as $thisProduct)
   <div class="row">
       <div class="col-md-3">
          <div class="form-group {{ $errors->has('option_id') ? 'has-error': '' }}">
            <label for="size">Sizes:</label>   
             
            <select class="form-control" id="size" class="form-control" name="option_id[]">

            @if(isset($thisProduct))    

               @foreach($options as $option)

                 <option value="{{ $option->id }}" @if($thisProduct->productOption->id == $option->id) selected="selected" @endif>{{ $option->name }}</option>

               @endforeach
                   
            @endif

         <select/>
      </div>
   </div>
@endforeach

这是我的控制器:

$productProductOptions = ProductProductOption::where('product_id', $product->id)->get();

for ($i=0; $i < count($request->option_id); $i++) { 

   foreach ($productProductOptions as $productProductOption) {

        $productProductOption->update(['product_option_id' => $request->option_id[$i]]);

   }

}

但它会从表单中选择最后一个选项并用它更新两条记录。 例如,管理员选择 small = option 1 和 medium = option 2,这两条记录都会更新为 2

【问题讨论】:

    标签: arrays laravel-5


    【解决方案1】:
      $productProductOption = []; $i = 0;
    
        foreach ($request->option_id as $optionId) {
    
            $productProductOption[$optionId] = [ 
                'regular_price'     => $request->regular_price[$i], 
                'sales_price'       => $request->sales_price[$i],  
                'quantity_available'=> $request->quantity_available[$i] 
    
            ];
    
            $i+=1;
    
        }
    
        $product->options()->sync($productProductOption);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      相关资源
      最近更新 更多