Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 17.01.2018 01:39:25

Сортировка массива в коллекции

Вроде задача логическая но думаю как сделать красивее. И так:
Есть коллекция изображений:
rd9sx
Каждое изображение имеет свой ID ну из базы конечно же, и имеется входящий массив данных для сортировки типа
[23,20]

Теперь надо сортировать коллекции массив чтоб на первом месте там в коллекции был сначала картинка под ID 23 а след. 20.
Можно сделать коллекцию новую и выдергивать по мере прохождения массива [23,20] туда картинки, ну и потом что останется докинуть уже без сортировки.
Вариант два, сделать сразу в модели какой то хитрый запрос в базу smile, но я не знаю как...
Может есть более изящные решения?
Нужно для реализации след функционала:
юзер дает в урле get запрос типа, images=23,20 я его ловлю, и говорю движку что выводить картинки надо именно в этом порядке, сначала картинку под id 23 потом под 20, ну слайдер. Так гибко получается очень, человек может меняя урл задавать разные параметры сортировки изображений в разных ситуациях.

Изменено Normand (17.01.2018 01:40:10)

Не в сети

#2 17.01.2018 13:44:09

Re: Сортировка массива в коллекции

$ids = [23, 20];

$images = Image::whereIn('id', $ids)->get()->sortBy(function($model) use ($ids){
            return array_search('id', $ids);
        });

Изменено vladislavTkachenko (17.01.2018 13:48:20)

Не в сети

#3 17.01.2018 19:33:08

Re: Сортировка массива в коллекции

спасибо за наводку сделал так

PHP
$good->images $good->images->sortBy( function () use ($get_images){
                return 
array_search('id'$get_images);
            });

Все работает, но сложно конечно было понять смысл функции замыкания особенно use ($get_images). В оф документации конечно толком мало про то написано в примерах.

Не в сети

Подвал раздела