迭代laravel表单,根据相邻列的值更新列中的行


Iterating laravel form that update rows in column based off value of adjoining column

我有一个有50个州的SQlite数据库,我想为每一个州创建一个输入。输入将使用文本字段中的数字输入更新数据库中各个州的"总数"。我创建了一个大约110行长的表单,但我确信我可以通过刀片模板的迭代来做到这一点。我只是不知道如何使表单字段对应于状态数组中的一个特定状态。

DB有一个名为Distributors的Eloquent模型,如下所示:

ID   |  State  | Total
1    |  PA     |  0     

我很确定,如果我为所有字段创建单独的输入值,并使用

,我可以使这个东西工作
DB::table('distributors')->where('state', '==', 'PA')
->update(array('total' => 'Input::get('total')'));

但是必须有一个更容易,更自动化的方法…

将所有状态传递给视图:

$states = DB::table('distributors')->lists('state');
return view('whatev', compact('states'));

然后在视图中遍历它们:

@foreach ($states as $state)
    <div class="form-group">
        <label for="{{ $state }}">Total for {{ $state }}:</label>
        <input type="text" id="{{ $state }}" name="totals[{{ $state }}]">
    </div>
@endforeach

然后循环保存它们:

foreach (Input::get('states') as $state => $total) {
    DB::table('distributors')->where('state', $state)->update(compact('total'));
}