我有一个需要按多列排序的集合,其中一列基于另一个数组,另一列指示它是否应该在另一列之后。
首先是集合:
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
},
},
],
}
参与排序的列是cardinal
,period
,after_item_id
period
的顺序(正如您必定已经猜到的)基于此数组:
$periods = ['minutes','hours','days','weeks']
我想我可以使用上面数组的索引来按顺序排序,然后按period
对每个cardinal
组进行排序,这非常简单。试图找到一种方法,然后包括after_item_id
来完成订购。
以上示例中的有序集合为:
ids: 25, 5, 88