Правильная рекурсия?

Всем привет!
Есть база данных

id parent_id name alias
1 0 одежда odegda
2 1 мужская mugskay
3 2 брюки мужские bruki
3 1 женская genskay
4 3 брюки женские брюки

Подскажите пжл, как сделать правильно рекурсию и собрать для каждой категории полный url, например:
odegda
odegda/mugskay
odegda/mugskay/bruki
odegda/genskay
odegda/genskay/bruki

И каким методом лучше.

  1. от начала parent_id = 0 (тут же как-то надо применить еще ссылку)
    как это все записать первым способом?

  2. с конца категорий от bruki

foreach ($categories as $cat) {

    $srt = $cat->alias; // записываем bridzhi
    $item = $categories->firstWhere('id', $cat->parent_id); // находим подкатегорию у bridzhi

    while ( !empty($item) ) { //если у bridzhi есть подкатегория
        $srt = $item->alias. '/' .$srt; // записываем mugskay/bridzhi
        $item = $categories->firstWhere('id', $item->parent_id); // находим подкатегорию у bridzhi mugskay
    }
    $cat->url = $srt; // odegda/mugskay/bridzhi

}
  1. видел что некоторые не используют колонку parent_id, место нее другая и в нее записываются id шники - #1#19#43#121. Как думаете по поводу этого способа?

Ответы (0 шт):