按多列并基于另一个数组进行订单收集

时间:2017-10-28 02:24:36

标签: php arrays laravel

我有一个需要按多列排序的集合,其中一列基于另一个数组,另一列指示它是否应该在另一列之后。

首先是集合:

Illuminate\Database\Eloquent\Collection {
     all: [
       App\Item {
         id: 25,
         name: "Mossie Muller",
         pivot: Illuminate\Database\Eloquent\Relations\Pivot {
           related_id: 3,
           item_id: 25,
           cardinal: 4,
           period: hours,
           after_item_id: null,
         },
       },
       App\Item {
         id: 5,
         name: "Dr. Verda Rice",
         pivot: Illuminate\Database\Eloquent\Relations\Pivot {
           related_id: 3,
           item_id: 5,
           cardinal: 2,
           period: "days",
           after_item_id: null,
         },
       },
       App\Item {
         id: 88,
         name: "Virgie Graham",
         pivot: Illuminate\Database\Eloquent\Relations\Pivot {
           related_id: 3,
           item_id: 88,
           cardinal: 12,
           period: "hours",
           after_item_id: 5
         },
       },
     ],
   }

参与排序的列是cardinalperiodafter_item_id

period的顺序(正如您必定已经猜到的)基于此数组:

$periods = ['minutes','hours','days','weeks']

我想我可以使用上面数组的索引来按顺序排序,然后按period对每个cardinal组进行排序,这非常简单。试图找到一种方法,然后包括after_item_id来完成订购。

以上示例中的有序集合为:

ids: 25, 5, 88

0 个答案:

没有答案