首页 > 解决方案 > 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();

标签: laravellaravel-5

解决方案


我建议将标题添加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]]);
}

推荐阅读