Добрый день! Не могу в интернете найти решение: Есть коллекция: Она заполняется в функции у меня $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?
если верно тебя понял - как то так https://qna.habr.com/q/341349 верно поставленный вопрос, это сейчас уже не 50% решения, а все 99%
Спасибо большое! То что нужно! Код (Text): $ids = $collection->keys()->toArray(); $results = Item::whereIn('id', $ids) ->orderBy(\DB::raw("FIELD(id, " . implode(',', $ids ) . ")")) ->get();