首页 > 解决方案 > 如何停止递归函数php [laravel]

问题描述

我使用 Laravel,我有表 tbl_menu

//In model: 
public function child()
    {
        return $this->hasMany('App\Menu', 'parentID', 'ID');
    }
//in controller
public function getCountChild()
    {
        $menu= Menu::where('ID', 2318)->first();
        echo '<br>Input: ' . $menu->id;
        $gioihan=20;
        $countChild  = $this->recursiveCountChild($menu, $gioihan);
        echo '<br>countChild  : ' . $countChild  ;
    }
public function recursiveCountChild($parent, $gioihan, $limit = 0)
    {
        $childs = $parent->child;
        $limit += $childs->count();

        if ($limit < $gioihan && $childs->count() > 0) {
            foreach ($childs as $item) {
                echo '<br>'. $item->affID.', ';
                //$this->dequyCountChild($item, $gioihan, $limit);
                return $this->dequyCountChild($item, $gioihan, $limit);
            }
        }elseif($limit>=$gioihan){
            echo "<br>Done: ".$limit;
            return $limit;
        }
        return $limit;
    }

结果: 不好的结果

我想获得 $limit 但不能。

看来,他们只在左边跑,而不在右边检查。帮我。谢谢

标签: phplaravelrecursive-query

解决方案


推荐阅读