2016-07-25 4 views
2

У меня есть следующая ...Laravel Сортировка Коллекция По Dynamic ID массива

$people = array(5, 2, 9, 6, 11); 

$people_collection = People::find($people); 

Но когда я сбросить и умереть $people_collection коллекция заказана ID ASC, как я могу сохранить коллекцию, в том же как массив $people?

+0

Это потому, что 'find' внутренне вызывает предложение mysql IN, которое возвращает строки в порядке возрастания пройденных идентификаторов. Вы можете вручную отсортировать массив или использовать метод, объясненный Jannie. – pioneer

ответ

6

Коллекция имеет функцию SortBy, которая принимает обратный вызов:

$people_collection = People::find($people) 
    ->sortBy(function($person, $key) use($people) { 
     return array_search($person->id, $people); 
     }); 

См the docs.

Смежные вопросы