У меня есть массив идентификаторов, по которым я хочу отсортировать данный столбец по ним в коллекции.
Например,
$suppliersOrder = [8,7,5,1,3,4];
$items = Items::get()->sortBy(function($model) use ($suppliersOrder) {
return array_search($model->supplier_id, $suppliersOrder);
})->values();
Это действует как порядок элементов как [1,3,4,5,7,8]
вместо данного заказа.И если я попробую sortByDesc, аналогично [8,7,5,4,3,1]
, но я не смог найти способ на самом деле отсортировать их по порядку моего массива.
Моя конечная цель - запустить $items->groupBy('supplier.name')
, чтобы я мог получить желаемоеorder.
Что Александр Вильялобос предложил в комментариях, я изменил свой код следующим образом:
$items = Items::get()->sortBy(function($model) use ($suppliersOrder) {
return rsort($model->supplier_id, $suppliersOrder);
});
Косвенное изменение перегруженного свойства App \ Item :: $ supplier_idне имеет эффекта