Сортировать коллекцию (или массив объектов) на основе атрибутов id и parent_id - PullRequest
1 голос
/ 05 апреля 2019

У меня возникла проблема с сортировкой коллекции Laravel по идентификатору объекта и атрибуту parent_id объекта.

В настоящее время у меня есть коллекция объектов в следующем формате:

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 голосов
/ 05 апреля 2019

Сортировка коллекции по parent_id (от низшего к наибольшему), а затем по id (от низшего к наибольшему), если родительские идентификаторы равны.

Этот подход предполагает, что первый элемент в коллекции должен быть корневым родителем.(тот, у которого parent_id NULL) и что для того, чтобы объект был родительским для объекта, родительский объект должен существовать первым и поэтому всегда будет иметь более низкий идентификатор, чем любой из его дочерних элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...