Как я могу sortBy () несколько значений в Laravel? - PullRequest
0 голосов
/ 03 февраля 2019

Похоже, что Laravel не предлагает способ сортировки по нескольким условиям.В моем случае я хочу отсортировать коллекцию по значению, которое я называю sort_order в порядке возрастания, а затем по дате в порядке убывания.

$item->sortBy('sort_order')->sortByDesc('date');

Это позволит отсортировать по первому условию, а затем перезаписать предыдущий sortBy вторым.

Из того, что я прочитал в laravel , это не поддерживается.Кто-нибудь еще сталкивался с этой проблемой, и если да, то как вы решили ее?

Я использую Laravel 5.6.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Я решил это, сгруппировав их и снова отсортировав, затем свернув:

$items->sortBy('sort_order')
      ->groupBy('sort_order')
      ->map(function ($subSet) {
          return $subSet->sortByDesc('date');
      })->collapse();
0 голосов
/ 03 февраля 2019

Попробуйте вместо этого.

$collection->sortBy([ ['sort_order', 'asc'], ['date', 'desc'] ])
...