id, но в порядке перечисления в этой коллекции. как?
т.е. надо whereIn, но сортировкой. есть такое?
вариант 1 отсортировать после того как получить данные с бд тогда sortBy
вариант 2 сортировака во время получения с бд orderByRaw('FIELD(type, 5, 2, 4, 3)’)
во, это выглядит достаточно дешево и декларативно. спасибо!
но если это id в relation то идеальный вариант подзапрос ( https://laravel.com/docs/8.x/eloquent#subquery-ordering) иначе если будет несколько тысяч элементов в коллекции бд будет уже не так легко
но если это id в relation то идеальный вариант подзапрос ( https://laravel.com/docs/8.x/eloquent#subquery-ordering) иначе если будет несколько тысяч элементов в коллекции бд будет уже не так легко
мож описать каким образом ты получил коллекцию айдишников в таком порядке?
есть таблица category_product, у category есть parent_id. легаси код собирает product_id из всех подкатегорий, чтобы в родительской категории показывать в том числе продукты из дочерних. отсюда этот массив. я добавил в релейшен таблицу поле order, разбил получение товаров на две части (сначала основная, потом дочерние категории) с сортировкой по order. предложенный тобой второй вариант заработал. подумаю еще, можно ли вообще все там переписать на нормальный релейшеншип, спасибо за советы!
Обсуждают сегодня