lazy_den
@lazy_den
Студент, Yii разработчик

Как скрыть ветвь дерева в Yii, при неограниченной вложенности потомков?

Добрый день,
имеется таблица в БД, где записи имеют неограниченную вложенность.
Как получить список элементов, без потомков, потомков потомков, потомков потомков ... и т.д.
Получить без потомков, довольно просто
$model->findAll('parent_id !='.$id);
А как исключить всех потомков?
Нужно для редактирование, чтобы родитель элемента не мог быть одним из его потомков.
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
lazy_den
@lazy_den Автор вопроса
Студент, Yii разработчик
Вот решение
Модель:
public function exceptChild($data,$rootID){
        foreach($data as $id => $node){
            if($node->parent_id == $rootID){
                unset($data[$id]);
                $data = $this->exceptChild($data,$node->id);
            }
        }
        return $data;
    }

Контроллер:
id - id записи чью ветку нужно скрыть.
$data = $model->exceptChild($model->findAll('id !='.$id),$id);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@slvABTOP
А может стоит изменить немного структуру БД?
nested sets взгляни
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы