Получить список категорий

Рейтинг: 1Ответов: 1Опубликовано: 09.03.2023

У меня есть список категорий с многоуровневыми подкатегориями.
Как мне вывести только те категории/подкатегории, у которых вложенные подкатегории не имеют ничего общего с указанным родителем?

Например, есть категории с id=1,2 и parent_id = null и подкатегории с id=3,4,5,6, у которых общий parent_id=1, и подкатегория с id=9, у которой parent_id=4. В итоге, если указать id=1, то категории с id=3,4,5,6,9 не должны отобразиться, т.к. они относятся к категории с id=1. В итоге, если я укажу id=1, то должна отобразится категории с id=2, а если я укажу категорию с id=2, то должны отобразится категории с id=1,3,4,5,6,9. Моя таблица: id, name, parent_id.

На скриншоте 2 наглядных примера. Если я укажу категорию с id=38, то категории с id=41,42 не должны отображаться. С id=7 похожая ситуация. Пример

Ответы

▲ 1

Немного не понял вопрос, но может вам поможет (есть категория и есть его вложенные подкатегории и так далее). Чтобы достать все подкатегории и его id, то можете использовать такой код и переделать под себя:

public function getAllSubCategories(&$ids = [])
    {
        $subCategories = $this->subCategorys;

        foreach ($subCategories as $subCategory) {
            $ids[] = $subCategory->id;
            $subCategory->getAllSubCategories($ids);
        }
        return $ids;
    }