laravel - Laravel 输入数组更新与单次提交
问题描述
我正在更新每个标题的标题数量我是 laravel 的新手请帮助下面是我的表格、表单、视图和控制器更新功能代码
查看添加头名
div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">
<form action="/headers" method="POST">
@csrf
<div class="row">
<div class="col">
<label for="">Header Name</label>
<input type="text" name="header_name" required="required">
<input type="submit" class="btn btn-primary" name="submit">
</div>
</div>
</form>
</div>
查看添加人头金额
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">
<form action="/headers" method="POST">
@csrf
@foreach ($data as $header)
<div class="row">
<div class="col">
<label for="">Header Name</label>
<input type="text" name="header_name[]" value="{{$header->header_name}}" required="required" readonly="readonly">
<input type="number" min="0" name="header_amount[]" placeholder="Amount" required="required">
</div>
</div>
@endforeach
<input type="submit" class="btn btn-primary" name="submit1">
</form>
</div>
控制器功能
$count = Header::count();
for ($i = 1; $i <= $count; $i++)
{
$header = Header::find($i);
$header->header_amount = $request->input('header_amount');
$header->save();
}
exit();
解决方案
我建议将标题添加ids[]
为隐藏输入,这样您就不必一开始就获得所有的Header
',这意味着更少的查询。
<div class="row">
<div class="col">
<input type="hidden" name="ids[]" value="{{ $header->id }}">
<label for="">Header Name</label>
<input type="text" name="header_name[]" value="{{$header->header_name}}" required="required" readonly="readonly">
<input type="number" min="0" name="header_amount[]" value="{{ $header->header_amount }}" placeholder="Amount" required="required">
</div>
</div>
然后在你的控制器中你可以有类似的东西:
$amounts = request('header_amount');
foreach (request('ids') as $key => $id) {
Header::where('id', $id)->update(['header_amount' => $amounts[$key]]);
}