$items = ArrayHelper::multiPropertySort($items, [
['column' => 'first_ap_date', 'order' => 'asc'],
['column' => 'name', 'order' => 'asc'],
['column' => 'status', 'order' => 'asc'],
]);
public static function multiPropertySort(Collection $collection, array $sorting_instructions)
{
return $collection->sort(function ($a, $b) use ($sorting_instructions) {
foreach ($sorting_instructions as $sorting_instruction) {
$a[$sorting_instruction['column']] = (isset($a[$sorting_instruction['column']])) ? $a[$sorting_instruction['column']] : '';
$b[$sorting_instruction['column']] = (isset($b[$sorting_instruction['column']])) ? $b[$sorting_instruction['column']] : '';
if (empty($sorting_instruction['order']) or strtolower($sorting_instruction['order']) == 'asc') {
$x = static::numGreater($a[$sorting_instruction['column']], $b[$sorting_instruction['column']]);
} else {
$x = static::numGreater($b[$sorting_instruction['column']], $a[$sorting_instruction['column']]);
}
if ($x != 0) {
return $x;
}
}
return 0;
})->values();
}