$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();}