我遇到了根据对象ID和对象的parent_id属性对Laravel集合进行排序的问题。
目前,我有以下格式的对象集合:
Collection {#563 ▼
#items: array:20 [▼
0 => Object {#546 ▶}
1 => Object {#544 ▶}
2 => Object {#540 ▶}
3 => Object {#542 ▶}
4 => Object {#541 ▶}
5 => Object {#536 ▶}
]
}
每个对象都具有以下属性:
#attributes: array:8 [▼
"id" => "70"
"name" => "Object Name 70"
"parent_id" => "75"
]
我需要对集合进行排序,其中父级将是第一个,然后是子级。然后又是父母和孩子。一个对象的parent_id为NULL。像这样:
Parent
Child
Child
Parent
Parent
Child
Child
Child
Parent
答案 0 :(得分:0)
如果父ID相等,则按parent_id(从最低到最高)对集合进行排序,然后按id(从最低到最高)对集合进行排序。
此方法假定集合中的第一个元素应为根父对象(具有parent_id NULL的元素),并且为了使对象成为对象的父对象,父对象必须首先存在,因此始终具有ID低于其所有子项。