VladSavelev
@VladSavelev
Good man

Как сортировать значения по возрастанию у обьекта по конкретному полю?

Получаю наш обьект:
$partnerProductStatuses = PartnerProductsStatus::all();
id name count partner_id
7 sredn 30 53
6 mnogo 50 53 
8 maloo 10 53


После чего мне нужно отсортировать по колонке count
Нашел пока что похожее решение, но оно годится только для ассоциативных массивов,а у меня обьект...
function cmp($a, $b)
    {
        return strcmp($a->count, $b->count);
    }
        usort($partnerProductStatuses, array($partnerProductStatuses,'cmp'));


В принципе можно его привести к более простому

$arr= [];
foreach ($partnerProductStatuses as $partnerProductStatus)
{
$arr['id'] = $partnerProductStatus->id;
$arr['count'] = $partnerProductStatus->count;
$arr['partner_id'] = $partnerProductStatus->partner_id;
}
Но у меня пока что все равно не получается... дебагер выводит следующую ошибку:
"unsort() expects parameter 2 to be a valid callback, function 'cmp' not found or invalid function name"
  • Вопрос задан
  • 857 просмотров
Решения вопроса 2
А почему на уровне выборки не сделать сортировку?
->orderBy('count', 'desc')
Ответ написан
Комментировать
$collection->sortBy('count'); по возрастанию

$collection->sortByDesc('count'); по убыванию

доки смотрите внимательнее https://laravel.com/docs/5.4/collections#method-sortby
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы