我正在通过以下方式构建递归菜单: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);
}
}
}
如果有一个解决方案从模型中求解而无需再次迭代,那将是非常了不起的!
我希望有所帮助
- 1 回答
- 0 关注
- 244 浏览
添加回答
举报
0/150
提交
取消