function _deleteNode($id, $db) { //循环找出$node['id']的所有pid节点 条件 pid = id $childNode = $db->where(array('pid' => $id))->select(); if (!empty($childNode)) { foreach ($childNode as $v) { _deleteNode($v['id'], $db); } } $bool = $db->where(array('id' => $id))->delete(); return $bool; }
/** * 删除节点与此节点的所有子节点 * 并删除赋予此节点的所有权限 */ function _deleteNode($node, $db) { //循环找出$node['id']的所有pid节点 条件 pid = id foreach ($node as $v) { $childNode = $db->where(array('pid' => $v['id']))->select(); if ($childNode) { _deleteNode($childNode, $db); } $db->where(array('id' => $v['id']))->delete(); if (M('access')->where(array('node_id' => $v['id']))->select()) { M('access')->where(array('node_id' => $v['id']))->delete(); } } return true; }
public function deleteCateAction() { if (!$_GET['id']) { $this->error('页面不存在', U('index')); } $id = $_GET['id']; $db = M('cate'); $bool = _deleteNode($id, $db); if (!$bool) { $this->error('删除失败', U('index')); } $this->success('删除成功', U('index')); }
public function deleteNodeAction() { if (!IS_AJAX) { return; } $id = I('id', '', 'intval'); $db = M('node'); //$true = M('node')->where(array('id' => $id))->delete(); //取出返回的node->id;若删除此节点则删除此节点下的所有子节点==>递归。。。 $node = $db->where(array('id' => $id))->select(); $true = _deleteNode($node, $db); //echo $true;die; if ($true) { redirect(U('Admin/Rbac/Node')); die; } else { $this->error(); } }