正在构建一个电子商务应用,我希望使用html / blade模板中的几个输入字段更新数据库中的两条记录。
我有一个产品,其尺寸作为产品的选项。因此,衬衫可以选择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 =选项1
和medium =选项2
,两个记录都会更新为2
。
答案 0 :(得分:0)
$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);