【发布时间】: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。
【问题讨论】: