Как отсортировать данные массива перед вставкой в ​​базу данных mysql

введите описание изображения здесь

у меня есть такая форма ниже

<form action="route('docaluculation')" method="POST">
{{ csrf_field() }}
<input type="number" name="student_score_number[]">
<input type="number" name="student_score_number[]">
<input type="number" name="student_score_number[]">
<input type="number" name="student_score_number[]">
<button>Submit</button>
</form>

когда форма отправлена, она только вставляет затем число, я хочу, чтобы она получала числа по каждому номеру и сортировала их и соответственно оценивала.

На моем изображении ниже, идентификаторы 1,2 и 10 должны иметь 1-ую позицию, которая равна «1», тогда у идентификатора 3 должна быть 2-я позиция, которая равна 2, и т. Д. Я попробовал то, что я могу сделать, но я даже не знаю, как это сделать, Я использую построитель запросов, пожалуйста, я читал циклы и PHP-массивы, но я не знаю с чего начать

-2

Решение

Используйте ранг в качестве позиции

SET @rank=0;
select rank,score from (select @rank:=@rank+1 AS rank,score
from  survey
order by score desc) as t2
1

Другие решения

Как это в любом контроллере,

use App\YourNumbersModel;

public function sortNumbers(){

$groupedNumbers = YourNumbersModel::get()->orderBy('number', 'desc')->groupBy('number');

$i = 1;

foreach($groupedNumbers as $gp){
foreach($gp as $numberToSort){

$DBnumber = YourNumbersModel::where('id', $numberToSort->id)->first();

$DBnumber->position = $i;

$DBnumber->save();
}
$i++;
}

}

редактировать: просто закодировал это здесь, если у вас есть какие-либо вопросы, вы можете задать мне, надеюсь, вы понимаете, что я делаю

для этого перед вставкой вы можете использовать тот же алгоритм

public function sortNumbers($userInput){

$groupedNumbers = collect($userInput); //collect the request input with laravel eloquent

$groupedNumbers = $groupedNumbers->orderBy('number', 'desc')->groupBy('number');foreach($groupedNumbers as $gp){
foreach($gp as $numberToSort){

$DBnumber = YourNumbersModel::where('id', $numberToSort->id)->first();

$DBnumber->position = $i;

$DBnumber->save();
}
$i++;
}
}
1

Попробуйте отсортировать перед базой

$scores = sort($request->input('student_score_number'));
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector