我正在列出一个表中的许多行,我试图使用每行中存在的下拉菜单来编辑它们。下面的代码很好,但是它将仅存储最后一个(S_Rank)值(这是我要更改的列),这是获取每一行输入的最佳方法。我知道表单不是数组的问题,将其变成数组的方式是什么
我的观点
{!! Form::open(['action' => 'AbstractsController@UpdateRank' , 'method' => 'post' ]) !!}
<table id="myTable" class ="table table-striped">
<thead>
<td><h4>Student Name</h4></td>
<td><h4>Student Rank</h4></td>
</thead>
@foreach($applications as $application)
<tbody>
<tr>
<td><h5>{{$application->Student_Name}}</h5></td>
<td><h5>
{{Form::select('Ranking' ,$ranks, ['class' => 'form-control', 'placeholder' =>$application->S_Rank] )}}
{{Form::hidden('Student_ids[]', $application->S_ID)}}
</h5></td>
</tr>
@endforeach
</tbody>
</table>
{{Form::Submit('Save New Ranking',['class' => 'btn btn-primary'])}}
{!! Form::close() !!}
我的控制器
foreach(request('Student_ids') as $S_ID){
$application = Application::where('S_ID' , $S_ID)->get();
$application->S_Rank = $request-> input('Ranking');
$application->save();}
我正在尝试使用每个下拉菜单中输入的值更新每一行
答案 0 :(得分:0)
我想你已经回答了。我认为您需要将$ranks
变量更改为$ranks[]
,因为您实际上只是采用他们在选择中选择的最后一个值,因此,您将等级存储在一个维度数组中,应该与您的Student_ids []隐藏数组相对应
答案 1 :(得分:0)
如果要更新每个应用程序的排名,则需要知道哪个排名值分配给哪个应用程序。假设S_ID是应用程序的唯一标识符,则可以在视图中执行以下操作:
<h5>
{{Form::select('Ranking[' . $application->S_ID . ']' ,$ranks, ['class' => 'form-control', 'placeholder' =>$application->S_Rank] )}}
</h5>
然后在您的控制器中:
foreach(request('Ranking') as $S_ID => $rank){
$application = Application::where('S_ID' , $S_ID)->first();
$application->S_Rank = $rank;
$application->save();}