2016-10-31 3 views
1

Я сделал функцию внутри category модели:рекурсивная функция в модели оленья кожа ничего возвращать - Laravel

public function getSecondCategoryByID($category_id = 0,$id = 0) 
    { 

     $category = $this->where('id','=',$category_id)->first(); 

     if($category->parent_cat_id == 1) 
     { 

      $mcategory = $this->where('id','=',$id)->first(); 


      echo 'Inside Model '.$mcategory->id; 
      return $mcategory->id; 


     }else{ 
      $this->getSecondCategoryByID($category->parent_cat_id,$category->id); 
     } 

    } 

в функции контроллера я назвал эту функцию:

$category = new Category; 

    $secondCategoryID = $category->getSecondCategoryByID($category_brand->category_id,0); 

    echo 'After Model '.$secondCategoryID ; 
    return ; 

, когда я называю свою функцию контроллер Я получил это сообщение на странице:

Inside Model 3After Model //it should be Inside Model 3After Model '3' 

Я думаю, что моя модель не " т вернуть что-нибудь! потому что после after model ничего!

+3

Вы забыли о возвращении в ELSE блок – nospor

+0

Вы пытаетесь сделать родитель-потомок рекуррентное соотношение в пределах одной и той же таблицы? –

+0

@nospor, если блок - это конец рекурсивных процессов. –

ответ

2

При выполнении рекурсии вам также нужно вернуть рекурсивный вызов, здесь показано изменение инструкции блока else.

else 
{ 
    return $this->getSecondCategoryByID($category->parent_cat_id,$category->id); 
} 
Смежные вопросы