$v) { $hasChild = isset($v['sublist']) && $v['sublist'] ? true : false; $data = array_intersect_key($v, $allow); $data['ismenu'] = isset($data['ismenu']) ? $data['ismenu'] : ($hasChild ? 1 : 0); $data['icon'] = isset($data['icon']) ? $data['icon'] : ($hasChild ? 'fa fa-list' : 'fa fa-circle-o'); $data['pid'] = $pid; $data['status'] = 'normal'; try { $menu = AuthRule::create($data); if ($hasChild) { self::create($v['sublist'], $menu->id); } } catch (PDOException $e) { throw new Exception($e->getMessage()); } } } /** * 删除菜单 * @param string $name 规则name * @return boolean */ public static function delete($name) { $menu = AuthRule::getByName($name); if ($menu) { // 必须将结果集转换为数组 $ruleList = collection(model('AuthRule')->order('weigh', 'desc')->field('id,pid,name')->select())->toArray(); // 构造菜单数据 $ids = Tree::instance()->init($ruleList)->getChildrenIds($menu['id'], true); if ($ids) { AuthRule::destroy($ids); } return true; } return false; } }