Дерево категорий бесконечная вложенность

Discussion in 'PHP' started by antras2007, 31 Mar 2015.

  1. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Доброго всем времени суток. Подскажет пожалуйстя, нужно вернуть дерево в виде массива. В базе три столбца: id, category, parent_category.

    нужно сделать это с помощью рекурсии
    что то вроде этого но что бы работало
    PHP:

        
    static function tree($parent_category 0$lvl 0)
        {
            
    $categories Category::where('parent_category''='$parent_category)->get();
            
    $i 0;
            
    $childs = array();
            if(
    count($categories) > $i){
                foreach(
    $categories as $category){
                    
    $childs[] = $category;
                    if(
    $category->parent_category 0){
                        
    $childs[]['child'] = $category;
                    }
                    
    self::tree($category->id);
                    
    $i++;
                    
    $lvl--;
                }
            }

            return 
    $childs;
        }

    ни как не получается соорудить массив в виде дерева. Если кто знает как это сделать, то если можно напишите пожалуйста на моем примере.
     
  2. Alexander89

    Alexander89 Member

    Joined:
    30 Nov 2009
    Messages:
    30
    Likes Received:
    8
    Reputations:
    0
    Нельзя так делать
    У тебя будет куча запросов к бд и очень большая нагрузка.
    Сначала выбери все записи из базы, а потом строй дерево рекурсией.
    Результат желательно закешеировать в виде дерева что бы не строить его при каждом запросе

    По коду
    - Надо сделать 1 запрос
    - Результат self::tree($category->id); ты не куда не сохраняешь
    - Зачем тебе $i++; $lvl--;
     
    banned likes this.