Laravel - обновить значение нескольких строк с помощью формы - PullRequest
0 голосов
/ 08 мая 2019

Я перечисляю много строк в таблице, и я пытаюсь редактировать их с помощью выпадающего меню, которое существует в каждой строке. Приведенный ниже код в порядке, но он будет хранить только последнее (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();}

Я пытаюсь обновить каждую строку введенным значением из каждого выпадающего меню

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Если вы хотите обновить ранжирование для каждого приложения, вам необходимо знать, какое значение ранжирования относится к какому приложению. Предполагая, что S_ID является уникальным идентификатором для Application, вы можете сделать что-то вроде этого:

<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();}
0 голосов
/ 09 мая 2019

Я думаю, вы уже ответили на свой вопрос. Я думаю, что вам нужно изменить $ranks var на $ranks[], потому что вы фактически берете только последнее значение, которое они выбрали в вашем выборе, таким образом, вы сохраняете свои ранги в одномерном массиве, который должен соответствовать вашему Student_ids [] скрытый массив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...