У меня есть коллекция, в которой мне нужно упорядочить итоги (от низшего к высшему), и, если у клиента нет итога (-), оставьте его ниже клиентов, которые это делают.
Коллекция возвращает следующее:
И мое намерение состоит в том, чтобы достичь следующего результата (сначала клиенты с итогом, а затем клиенты без итога):
$sales = Sale::with('client')
->get()
->map(function($sale){
$sale['total'] = $sale->total ? $sale->total * $sale->quantity : '--';
return $sale;
});
Я пытался использовать sortBy('total')
, но у меня это не работает.
Решение:
$sales = Sale::with('client')
->get()
->map(function($sale){
$sale['total'] = $sale->total ? $sale->total * $sale->quantity : '--';
return $sale;
})
->sort(function($a, $b) {
if ($a->total == "--" && $b->total != "--") {
return 1;
}
if ($a->total != "--" && $b->total == "--") {
return -1;
}
if ($a->total == "--" && $b->total == "--") {
return 0;
}
return $a->total - $b->total;
});
Спасибо за помощь. С уважением
sales
и таблицаclients
? - person Vladyslav Startsev   schedule 28.08.2018