Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Добрый день!
Не могу в интернете найти решение:
Есть коллекция:
Она заполняется в функции у меня
$links = Item::where()... с моими фильтрами
$links = Link::where()... с моими фильтрами
$collection = collect();
$str = "";
foreach ($items as $item) {
$str = "";
foreach ($links as $link) {
$item_find = GlobalController::view_info($item->id, $link->id);
$str = $str . trim($item_find['name']);
}
}
// В $collection сохраняется в key - $item->id
$collection[$item->id] = $str;
}
// Сортировка коллекции по значению
$collection = $collection->sort();
примерно так заполняется(для примера):
$collection = ['Fff', 'Aaa', 'Bbb', 'Zzz', 'Ggg'];
В качестве ключей коллекции - коды $item->id
Потом сортируется по наименованию:
$collection = $collection->sort();
$collection = ['Aaa', 'Bbb', 'Fff', 'Ggg', 'Zzz'];
И мне нужно получить список всех Items с такими кодами и в такой же последовательности как в коллекции.
(Сортировать типа в Item::all()->orderBy - этот вариант мне не подходит, результат есть в коллекции)
Вот команда:
$results = Item::whereIn('id',$collection->keys())->get();
Она работает, но мне нужно список Items в той последовательности что в коллекции $collection,
т.е. в алфавитном порядке,
а она возвращает в том порядке, в котором сохранены в таблице базы данных.
Как это сделать? Список Items в той последовательности что в коллекции $collection?
Не в сети