根据id和parent_id属性对集合(或对象数组)进行排序

时间:2019-04-05 14:32:30

标签: php sql laravel algorithm sorting

我遇到了根据对象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

1 个答案:

答案 0 :(得分:0)

如果父ID相等,则按parent_id(从最低到最高)对集合进行排序,然后按id(从最低到最高)对集合进行排序。

此方法假定集合中的第一个元素应为根父对象(具有parent_id NULL的元素),并且为了使对象成为对象的父对象,父对象必须首先存在,因此始终具有ID低于其所有子项。