Q:

Laravel: sorting collection by last name in single string

i'm trying to sort a collection, which consists of ids and full names, alphabetically by the last name.
the id comes from a parent class and the full name from the child.
I tried exploding the string and ordering according to the last name, but couldn't really get it to also reorder th IDs properly.
I tried both with sortBy while getting the collection and with usort after retrieving it
$testExaminers=TestExaminer::where('test_id',$request->testid)
->with('examiner')
->get()
->sortBy('examiner.name');

$result = array();
$num=0;
foreach($testExaminers as $testExaminer) {
            $result[$num]['id'] = (int) $testExaminer->examiner_id;
            $result[$num]['text'] = $testExaminer->examiner->name;
            $num++;
}

echo json_encode(['examiners'=>$result]);

The code above works fine for sorting it by first name, but I need it to sort by last name.
user inputs test_id, which gives a list of "TestExaminers", each has a property "examiner_id" associated with a unique "examiner", which in turn has a name "firstname middlename lastname". 
so it should look something like this
before sort
$result = [[1,'Alpha Z. Goodman'],[2,'Joe Bman'],[3,'ZZ Top'],[4,'Joe Aman']]

after sort
$result = [[4,'Joe Aman'],[2,'Joe Bman'],[1,'Alpha Z. Goodman'],[3,'ZZ Top']]

Thanks!

A:

How about trying something like this?
$testExaminers = TestExaminer::where('test_id', $request->testid)
    ->with('examiner')
    ->get()
    ->map(function ($item, $key) {
        $item->examiner->last_name = array_slice(explode(' ', $item->examiner->name), -1)[0];

        return $item;
    })
    ->sortBy('examiner.last_name');

