Я придерживался сортировки коллекции в laravel на основе различных ситуаций.
Для простоты приведен пример коллекции:
1;
pmt: 1
thm: 1
customerFriendly: false
2;
pmt: 1
thm: 1
customerFriendly: true
3;
pmt: 2
thm: 4
customerFriendly: true
Мне нужно сначала отсортировать эту коллекцию на основе значение pmt. Самый низкий сначала. Если есть те же значения pmt, чем мне нужна вторая сортировка на основе значения thm. После этого, если, возможно, будет то же число, что и мне, нужно снова отсортировать его по логическому полю заказчика.
Таким образом, на основе приведенного выше примера окончательный отсортированный список должен быть 2,1,3
Насколько я могу, я могу сначала отсортировать список по pmt и, если thm найдет те же pmt-s, но я не могу отсортировать его по customerFriendly.
Вот мой код:
$pmtDuplicated = $this->checkDuplicates($transformedLoans, 'pmt');
if ($pmtDuplicated) { //If we found same pmt-s sort by thm also
$secondSort = $transformedLoans->sortBy(function ($item) {
return $item->pmt . '-' . $item->thm;
})->values();
$thmDuplicatesInSecondSort = $this->checkDuplicates($secondSort, 'thm'); //Check again for same thm
if ($thmDuplicatesInSecondSort) { //If we found same thm sort by customerFriendly also
return $secondSort->sortBy('customerFriendly')->values();
} else {
return $secondSort;
}
} else {
return $transformedLoans->sortBy('pmt')->values();
}
Кто-то может мне помочь? Спасибо.