Laravel 中的递归菜单

我正在通过以下方式构建递归菜单:


public static function tree()

{

    return static::with(implode('.', array_fill(0, 100, 'children')))->where('parent_id', '=', '0')

        ->join('company_components', 'id', '=', 'company_components.component_id')

        ->where('company_components.company_id', '=', auth('api')->user()->with('company')->first()->company_id)

        ->orderBy('id')

        ->get();

}

我得到这样的东西:


[

  {

    "id":1,

    "parent_id":0,

    "name":"Cuentas",

    "url":"",

    "icon":"fa fa-user",

    "deleted_at":null,

    "created_at":"2019-05-26 18:57:02",

    "updated_at":"2019-05-26 18:57:02",

    "company_id":1,

    "component_id":1,

    "children":[

        {

          "id":2,

          "parent_id":1,

          "name":"Crear Cuenta",

          "url":"/account/create",

          "icon":"fa fa-circle-o",

          "deleted_at":null,

          "created_at":null,

          "updated_at":null,

          "children":[]

        }

     ]

  }

]

如何避免最后一个元素的空数组(不再有子元素)?


如果“孩子”没有更多孩子,有没有办法不创建元素?


慕容708150
浏览 245回答 1
1回答

动漫人物

  $this->cleanMenu($menu);    public function cleanMenu($tree)    {        foreach($tree as $t) {            if (!$t->children->count() > 0) {                unset($t['children']);            } else {                $this->cleanMenu($t->children);            }        }    }如果有一个解决方案从模型中求解而无需再次迭代,那将是非常了不起的!我希望有所帮助
打开App,查看更多内容
随时随地看视频慕课网APP