为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 中的递归菜单

Laravel 中的递归菜单

PHP
慕容708150 2021-06-30 14:19:40
我正在通过以下方式构建递归菜单: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":[]        }     ]  }]如何避免最后一个元素的空数组(不再有子元素)?如果“孩子”没有更多孩子,有没有办法不创建元素?
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

  $this->cleanMenu($menu);


    public function cleanMenu($tree)

    {

        foreach($tree as $t) {

            if (!$t->children->count() > 0) {

                unset($t['children']);

            } else {

                $this->cleanMenu($t->children);

            }

        }

    }

如果有一个解决方案从模型中求解而无需再次迭代,那将是非常了不起的!


我希望有所帮助


查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 244 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信