иногда бывает нужным отсортировать все элементы коллекции по другому массиву. причем ид могут не принадедать ид коллекции, это моо сделаьт черех такой метод
если значения ид коллекции не будут в массиве ид для сортировки то эти ид буду вконце отсортированной коллекции
/**
* @param \Illuminate\Support\Collection $collection
* @param array $sortByIds
* @return \Illuminate\Support\Collection
*/
function sortCollectionByArraysIds($collection, $sortByIds)
{
$idsOnThisNode = array_intersect($sortByIds, $collection->pluck('id')->toArray());
$idsSort = array_merge(
$ids ,
array_diff($collection->pluck('id')->toArray(), $ids)
);
$collection = $collection->sort(function ($modelCategory, $modelCategorySecond) use ($ids ) {
return (
array_search($modelCategorySecond->id, $ids ) >
array_search($modelCategory->id, $ids ))
? -1 : 1;
});
return $collection;
}
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)